yii2 Как удалить неиспользуемые параметры запроса из url

#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 папке.