Через modelSearch. При генерации crud через gii должен был даже файл с фильтрами создаться (Если указывали serchmodel). Файл _search.php в папке views
с приблизительно следующим кодом:
<?php $form = ActiveForm::begin([
'action' => ['index'],
'method' => 'get',
]); ?>
<div class="col-xs-3"><?= $form->field($model, 'text') ?></div>
<div class="col-xs-3"><?= $form->field($model, 'cat') ?></div>
<div class="col-xs-3"><?= $form->field($model, 'status')->dropDownList($model->getStatusList(),['prompt'=>''])
?></div>
<div class="col-xs-3"><?= $form->field($model, 'email') ?></div>
<div class="form-group col-xs-12">
<?= Html::submitButton(Yii::t('app', 'Search'), ['class' => 'btn btn-primary']) ?>
<?= Html::resetButton(Yii::t('app', 'Reset'), ['class' => 'btn btn-default']) ?>
<?= Html::a(Yii::t('app', 'Создать Запрос'), ['create'], ['class' => 'btn btn-success']) ?>
</div>
<?php ActiveForm::end(); ?>
А экшен куда уходит форма, стандартно это index приблизительно следующий:
public function actionIndex()
{
$searchModel = new RequestSearch();
$dataProvider = $searchModel->search(Yii::$app->request->queryParams);
return $this->render('index', [
'searchModel' => $searchModel,
'dataProvider' => $dataProvider,
]);
}
При этом вся логика фильтрации и поиска вынесена в RequestSearch, который наследован от Request. Опять таки все это автоматом делает gii.
Почитайте:
www.yiiframework.com/doc-2.0/guide-output-data-wid...