#javascript #php #url #parameters #yii
#javascript #php #url #параметры #иии
Вопрос:
У меня есть Kartik GridView и пользовательский фильтр. После gridfilter в моем браузере я получил URL, подобный
localhost:20024/consignment?fid=amp;post_code=amp;pud2_mrn=amp;pud2_status=PUDPamp;pud_status=amp;pud2_remaining_date=amp;mrn=amp;mrn_status=amp;ioss_number=amp;declaration_type=amp;status=amp;entry_at=amp;exit_at=amp;created_at=
Есть ли способ удалить незаполненные параметры из URL внутри YII вместо javascript?
Или кто-нибудь может предоставить полный пример javascript для достижения этой цели.
Комментарии:
1. Возможно, вы захотите взглянуть на github.com/yiisoft/yii2/pull/16848 . Я не думаю, что в framework есть что-то подобное, объединенное, но вы могли бы это исправить.
2. @rob006 Спасибо за ваш ответ, но это не соответствует моим потребностям. Во-первых, потому что я использую Kartik, а во-вторых, я не могу переписать файлы поставщика
3. Я почти уверен, что Kartik использует сценарии по умолчанию из Yii 2 для обработки фильтрации.
4. @rob006 он все еще находится у поставщика, извините
Ответ №1:
Скопируйте vendor/yiisoft/yii2/yii.gridView.js
куда-нибудь в web
каталог (например web/js
, и добавьте эту строку:
$.each(data, function (name, value) { if (value[0].length === 0) data[name] = null; });
предшествующая эта строка в applyFilter
методе:
var pos = settings.filterUrl.indexOf('?');
Затем добавьте это в web.conf
(обновите пути, если вы использовали другое место для этого js-файла):
'assetManager' => [
'bundles' => [
'yiigridGridViewAsset' => [
'sourcePath' => '@webroot/js',
'basePath' => '@webroot/js',
'baseUrl' => 'vendor/js',
],
],
],
Это означало, что вы ничего не изменяете в vendor
папке.