как в gridview yii2 фильтровать только по одному параметру

когда фильтруешь таблицу, построенную на gridview каждый следующий применённый фильтр ищет в пределах уже отобранных результатов и у тебя копится борода в урле типа

FundSearch%5Bid%5D=&FundSearch%5Border_id%5D=&FundSearch%5Buser_id%5D=&FundSearch%5Bdate%5D=&FundSearch%5Bnecessarily%5D=&FundSearch%5Bbank_checks_id%5D

понятно, что это всё можно регулировать через orFilterWhere и andFilterWhere, но вопрос в том, как всегда получать/отправлять один единственный парметр типа ?ProductSearch%5Bcategory_id%5D=795?


Ответы (1 шт):

Автор решения: delikates

Не уверен, что правильно понял суть Вашего вопроса. Но в рамках того, что понял - делаете вывод своего фильтра в каждом столбце. В любом из них добавляете hidden поле c именем category_id и значением. Пример:

    $searchModel->category_id = 795;

    echo GridView::widget([
        'dataProvider' => $dataProvider,
        'filterModel' => $searchModel,
        'columns' => [
            //-- ID
            [
                'label' => \Yii::t('app', 'Column Id'),
                'filter' => Html::button(Html::tag('i', '', ['class' => 'glyphicon glyphicon-remove']), ['name' => 'clear-group_id','class' => 'form-control rbtn']).
                    Html::activeInput('text',$searchModel,'group_id',[
                        'class' => 'form-control',
                    ]).                    Html::activeInput('text',$searchModel,'category_id',[
                        'class' => 'hide form-control',
                    ]),
,
                'headerOptions' => ['class' => 'column-id'],
                'attribute' => 'group_id',
                'format' => 'html',
                'value' => function($model) {
                    return ( is_array( $model ) && isset( $model['group_id'] ) ? $model['group_id'] : null );
                },
                'contentOptions' => ['class' => 'text-center'],
            ],
        ]
       ]);

Таким образом при применении фильтра, помимо остальных полей Вам всегда будет передано еще одно поле category_id с его значением.

→ Ссылка