Вывожу в GridView некоторые данные и если применять к ним фильтры, то в адресной строке будет ужасная картина из get-параметров SearchModel, параметр сортировки, пагинации и т.д.
Искал ответ, как скрыть все это безобразие и нашел способ, GridView можно обернуть в Pjax и передавать параметры через POST. В контроллере также вносится небольшая правка.
Код: Выделить всё
//view
<?php Pjax::begin([
'id' => 'student-work',
'timeout' => false,
'enablePushState' => false,
'clientOptions' => ['method' => 'POST'],
]); ?>
<?= GridView::widget([
'dataProvider' => $dataProvider,
'filterModel' => $searchModel,
'columns' => [
....
],
],
]); ?>
<?php Pjax::end(); ?>
Код: Выделить всё
//controller
public function actionIndex()
{
$searchModel = new StudentWorkSearch();
$dataProvider = $searchModel->search(Yii::$app->request->post());
return $this->render('index', [
'searchModel' => $searchModel,
'dataProvider' => $dataProvider,
]);
}
1) Это работает для применения одного фильтра. Грубо говоря andWhere() из двух установок фильтров сделать не получится.
2) Сортировка и пагинация не включаются в обработку Pjax.
Если знаете, пожалуйста, подскажите решение данного вопроса!