Как вынести поле фильтра из GridView?
Как вынести поле фильтра из GridView?
Всем привет!
Подскажите, пожалуйста, есть ли способ сделать отдельное поле вне таблицы GridView, которое бы функционировало как фильтр по столбцу. Просто находилось в другой части страницы.
Подскажите, пожалуйста, есть ли способ сделать отдельное поле вне таблицы GridView, которое бы функционировало как фильтр по столбцу. Просто находилось в другой части страницы.
Re: Как вынести поле фильтра из GridView?
Просто сделайте отдельную форму в той части страницы , где вам надо и получая get запросом данные для фильтра в запрос добавьте andFilterWhere ()
Re: Как вынести поле фильтра из GridView?
ZxcR_777 спасибо за ответ, но я не понимаю, как это сделать
Re: Как вынести поле фильтра из GridView?
Добавьте форму с нужными вам полями фильтра, action - укажите тот где у вас выводится gridview, в контроллере получаете
iif(Yii::$app->request->get('filter')){
$fliter = Yii::$app->request->get('filter');
... здесь переменным передаёте значения формы ...
например $name => $fliter['name'];
}
Далее в ваш запрос выборки добавляете ->andFilterWhere(['like', 'LOWER(name)', $name])
iif(Yii::$app->request->get('filter')){
$fliter = Yii::$app->request->get('filter');
... здесь переменным передаёте значения формы ...
например $name => $fliter['name'];
}
Далее в ваш запрос выборки добавляете ->andFilterWhere(['like', 'LOWER(name)', $name])
Re: Как вынести поле фильтра из GridView?
Сделайте без Ajax сначала. Вам же написали:
Расскоментируйте в index.php <?php //echo $this->render('_search' ...
Чтобы правильно задать вопрос, нужно знать бо́льшую часть ответа. Роберт Шекли.
Re: Как вынести поле фильтра из GridView?
Re: Как вынести поле фильтра из GridView?
Допустим, что я сделал вот так.
Я вижу, что dataprovider правильно собирается. вопрос в том, как его применить к gridview чтоб он перерисовался?
Код: Выделить всё
public function actionIndex()
{
$searchModel = new PhtestSearch();
$dataProvider = $searchModel->search(Yii::$app->request->queryParams);
if (\Yii::$app->request->isAjax) {
$data = Yii::$app->request->post();
$filter = $data['filter'];
$qp = Yii::$app->request->queryParams;
$qp['PhtestSearch']['filterfield'] = $filter;
$dataProvider = $searchModel->search($qp);
//дальше что?
}
return $this->render('index', [
'searchModel' => $searchModel,
'dataProvider' => $dataProvider,
'model' => $searchModel,
]);
}
Re: Как вынести поле фильтра из GridView?
Зачем вы снова забиваете модель поиска? Это должна делать сама модель поиска.
Если перегружается страница то:
1. Неверно настроен пиджак
2. В ответе пиджаку приходит статус, отличный от 200.
Это все дебажится за 5 минут
Если перегружается страница то:
1. Неверно настроен пиджак
2. В ответе пиджаку приходит статус, отличный от 200.
Это все дебажится за 5 минут
Re: Как вынести поле фильтра из GridView?
Я это делаю потому, что не понимаю, как делать правильно.
Что должно инициировать изменение результатов модели поиска? Какая команда?
Если мы просто прикручиваем форму, которая работает GET-запросом, то она и должна перезагружаться и работает она в этом смысле корректно - в адресной строке я вижу передаваемые параметры, таблица после загрузки отфильтрована, в поле фильтра стоит нужный параметр. Вопрос в том, как это сделать без перезагрузки страницы - ввести в некое поле слово, чтобы таблица отфильтровалась.
До того момента, верно ли настроен пиждак - я ещё не дошёл, потому что не понимаю, что должно быть сделано, чтобы получить такой же эффект как и по откравке формы, только без перезагрузки страницы.
Re: Как вынести поле фильтра из GridView?
Я сказал как. Генерируйте gii, там все видно и понятно.Grazio писал(а): ↑2017.10.24, 21:26Я это делаю потому, что не понимаю, как делать правильно.
Что должно инициировать изменение результатов модели поиска? Какая команда?
Если мы просто прикручиваем форму, которая работает GET-запросом, то она и должна перезагружаться и работает она в этом смысле корректно - в адресной строке я вижу передаваемые параметры, таблица после загрузки отфильтрована, в поле фильтра стоит нужный параметр. Вопрос в том, как это сделать без перезагрузки страницы - ввести в некое поле слово, чтобы таблица отфильтровалась.
До того момента, верно ли настроен пиждак - я ещё не дошёл, потому что не понимаю, что должно быть сделано, чтобы получить такой же эффект как и по откравке формы, только без перезагрузки страницы.
Запросы формируются в searchModel
Re: Как вынести поле фильтра из GridView?
urichalex ,
Я не понимаю, что вы от меня хотите. Я и так работаю в сгенерированном gii CRUD'e.
Вот, что по умолчанию идёт в контроллере в actionIndex:
В первой строчке тела экшена создаётся объект Search,
Во второй - создаётся dataProvider через его функцию search(), В которую передаются поисковые\фильтрационнные параметры. Никаких других методов в модели поиска для изменения полученного здесь методом search() датапровайдера - я больше не вижу.
Может быть вы напрямую скажете, что вы имеете ввиду?
Я не понимаю, что вы от меня хотите. Я и так работаю в сгенерированном gii CRUD'e.
Вот, что по умолчанию идёт в контроллере в actionIndex:
Код: Выделить всё
public function actionIndex()
{
$searchModel = new PhtestSearch();
$dataProvider = $searchModel->search(Yii::$app->request->queryParams);
...
Во второй - создаётся dataProvider через его функцию search(), В которую передаются поисковые\фильтрационнные параметры. Никаких других методов в модели поиска для изменения полученного здесь методом search() датапровайдера - я больше не вижу.
Может быть вы напрямую скажете, что вы имеете ввиду?