Обнаружил такую новую модельку https://github.com/yiisoft/yii2/blob/ma ... Filter.php
Но толковой документации с примерами не нашел.
Кто нибудь использовал? В чем вообще преимущество в сравнении с обычной search model?
В чем суть DataFilter?
Re: В чем суть DataFilter?
Док то есть, но очень краткий и из него не понятно, как использовать новую фичу с виджетами типа гридвью. Разобрался в результате, но это не то, чтобы очевидно и элементарно.
Еще так и осталось непонятно - как подразумевается кастомизировать создание условий?
Как например сделать поиск лайком для определенного поля(аттрибута)? Нашел возможность сделать это через изменении свойства conditionBuilders, но это как-то больше похоже на хак чем на решение.
Еще так и осталось непонятно - как подразумевается кастомизировать создание условий?
Как например сделать поиск лайком для определенного поля(аттрибута)? Нашел возможность сделать это через изменении свойства conditionBuilders, но это как-то больше похоже на хак чем на решение.
-
- Сообщения: 30
- Зарегистрирован: 2014.02.22, 00:08
Re: В чем суть DataFilter?
Так расскажите, пожалуйста, более подробно как пользоваться. Спасибо!yan писал(а): ↑2018.02.16, 22:18 Док то есть, но очень краткий и из него не понятно, как использовать новую фичу с виджетами типа гридвью. Разобрался в результате, но это не то, чтобы очевидно и элементарно.
Еще так и осталось непонятно - как подразумевается кастомизировать создание условий?
Как например сделать поиск лайком для определенного поля(аттрибута)? Нашел возможность сделать это через изменении свойства conditionBuilders, но это как-то больше похоже на хак чем на решение.
Re: В чем суть DataFilter?
как-то так, будут рад коментам, как это м.б. сделать лучшеdemogorgorn писал(а): ↑2018.02.27, 23:40 Так расскажите, пожалуйста, более подробно как пользоваться. Спасибо!
контролер
Код: Выделить всё
// здесь м.б. просто User, но надо учесть что ActiveDataFilter анализирует валидаторы, определяя по ним тип данных
$searchModel = new UserSearch();
$filter = new ActiveDataFilter([
'searchModel' => $searchModel,
'filterAttributeName' => $searchModel->formName()
]);
// тот самый хак, по другому не нашел как кастомизировать условия для отдельного атрибута, возможно плохо искал
$filter->conditionBuilders['name'] = function ($operator, $condition) {
return ['LIKE', $operator, $condition];
};
$filter->load(request()->get());
$query = User::find();
if ($filterConditions = $filter->build()) {
$query->andFilterWhere($filterConditions);
}
$dataProvider = new ActiveDataProvider([
'query' => $query,
]);
return $this->render('index', [
'dataProvider' => $dataProvider,
'filter' => $filter,
]);
Код: Выделить всё
<?= GridView::widget([
'dataProvider' => $dataProvider,
'filterModel' => $filter->searchModel,...
-
- Сообщения: 30
- Зарегистрирован: 2014.02.22, 00:08
Re: В чем суть DataFilter?
Спасибо! Буду разбираться
Re: В чем суть DataFilter?
а то что стандартно генерируется gii не обладает нужным функционалом?
вот пример
вот пример