[Решено] Фильтрация в модели перед выводом index

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
Паяц
Сообщения: 40
Зарегистрирован: 2012.05.22, 20:09
Откуда: Москва, Россия

[Решено] Фильтрация в модели перед выводом index

Сообщение Паяц »

Всем день добрый.

В одной таблице хранятся записи двух (в дальнейшем возможно и больше) типов записей.
Тип хранится в колонке type.

Сделал в меню два пункта с параметром type, который передаётся через get-запрос.
Проверил, что контроллер в actionIndex этот параметр получает.
Попробовал добавить условие в ModelSearch - не помогло: в переменной $params параметр ['type'] пришёл, но после $this->load($params) он обнулился.

Подскажите, пожалуйста, как отфильтровать значения в модели (перед выводом в GridView) по параметру type? Т.е. когда никакие фильтры ещё не передаются.
Последний раз редактировалось Паяц 2015.09.26, 22:39, всего редактировалось 1 раз.
Аватара пользователя
irpsv
Сообщения: 65
Зарегистрирован: 2015.07.07, 18:03
Контактная информация:

Re: Фильтрация в модели перед выводом index

Сообщение irpsv »

А можно код хотя бы, а то на слух совсем не воспринимается.
...то что мы не понимаем, делает нас тупее...
Аватара пользователя
Neuromance
Сообщения: 716
Зарегистрирован: 2011.09.06, 13:04

Re: Фильтрация в модели перед выводом index

Сообщение Neuromance »

Добавить type в безопасные переменные
Паяц
Сообщения: 40
Зарегистрирован: 2012.05.22, 20:09
Откуда: Москва, Россия

Re: Фильтрация в модели перед выводом index

Сообщение Паяц »

На Тостере подсказали решение:
Любая модель в метод load ждет массив типа:

Код: Выделить всё

[
    // имя класса без неймспейса
    'ModelSearch' => [
        ...
    ]
] 
Это поведение можно переопределить, но можно делать и так:

Код: Выделить всё

$this->load($params, ''); 
Вторым параметром мы скажем модельке, чтобы она искала атрибуты от корня массива.
У меня заработало.
Ответить