Фильтрация GridView

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
Brainfuck
Сообщения: 313
Зарегистрирован: 2018.02.19, 14:20

Фильтрация GridView

Сообщение Brainfuck »

Не нашел ни одного толкового гайда в сети по этой теме. Пожалуйста объясните как пользоваться фильтрацией? Я понял только что надо в модели метод search определить и указать экземпляр модели в поле searchModel. Но у меня упорно не заходит в этот метод - дебажил. А еще есть какой-то ActiveDataFilter, который по идее должен делать тоже самое без создания дополнительных методов, но он тоже не работает.
someweb
Сообщения: 552
Зарегистрирован: 2017.03.09, 10:12

Re: Фильтрация GridView

Сообщение someweb »

Сделайте через gii и посмотрите как сделанно.
Чтобы правильно задать вопрос, нужно знать бо́льшую часть ответа. Роберт Шекли.
Brainfuck
Сообщения: 313
Зарегистрирован: 2018.02.19, 14:20

Re: Фильтрация GridView

Сообщение Brainfuck »

someweb писал(а): 2019.04.24, 10:55 Сделайте через gii и посмотрите как сделанно.
Ни разу им не пользовался. Даже не знаю...
someweb
Сообщения: 552
Зарегистрирован: 2017.03.09, 10:12

Re: Фильтрация GridView

Сообщение someweb »

Так воспользуйтесь - https://www.yiiframework.com/doc/guide/2.0/ru/start-gii
Чтобы правильно задать вопрос, нужно знать бо́льшую часть ответа. Роберт Шекли.
Brainfuck
Сообщения: 313
Зарегистрирован: 2018.02.19, 14:20

Re: Фильтрация GridView

Сообщение Brainfuck »

Ну да gii вроде генерирует. А что с ActiveDataFilter? Как его использовать?

P.S. Кстати, абсолютно не понимаю в чем смысл делать отдельную модель для поиска? Можно же этот метод добавить в основную модель которая из базы достается.
Аватара пользователя
Dominus
Сообщения: 892
Зарегистрирован: 2013.03.14, 21:27
Откуда: Россия, Иваново
Контактная информация:

Re: Фильтрация GridView

Сообщение Dominus »

Brainfuck писал(а): 2019.04.24, 11:14 P.S. Кстати, абсолютно не понимаю в чем смысл делать отдельную модель для поиска? Можно же этот метод добавить в основную модель которая из базы достается.
Котлеты отдельно, мухи отдельно)
Основная модель
Поисковая модель
Не спорь с дураком, иначе окружающие не правильно поймут кто из вас дурак!
Аватара пользователя
Dominus
Сообщения: 892
Зарегистрирован: 2013.03.14, 21:27
Откуда: Россия, Иваново
Контактная информация:

Re: Фильтрация GridView

Сообщение Dominus »

Brainfuck писал(а): 2019.04.24, 11:14 Ну да gii вроде генерирует. А что с ActiveDataFilter? Как его использовать?
Топик: viewtopic.php?t=46572
Не спорь с дураком, иначе окружающие не правильно поймут кто из вас дурак!
Аватара пользователя
proctoleha
Сообщения: 298
Зарегистрирован: 2016.07.10, 19:00

Re: Фильтрация GridView

Сообщение proctoleha »

Dominus писал(а): 2019.04.26, 21:41
Brainfuck писал(а): 2019.04.24, 11:14 P.S. Кстати, абсолютно не понимаю в чем смысл делать отдельную модель для поиска? Можно же этот метод добавить в основную модель которая из базы достается.
Котлеты отдельно, мухи отдельно)
Основная модель
Поисковая модель
Разработчики Yii2 изначально и сознательно заложили в то, что обычно называют моделью (в Yii2) слишком много всего. Какие там принципы SOLID!
Модель в Yii2 может всё, и даже чуточку больше. В сложном проекте это приводит к тому, что модель становится божественной. Многие сотни строк кода, своя логика в beforeSave (), afterSave(), beforeDelete() ... + несколько сценариев. Все это между собой переплетено, и чтобы что-то пофиксить, или изменить, или добавить ты тратишь огромную кучу времени и нервов, даже если ты это делал сам.

Профит только в одном - можно по быстрому сделать-развернуть приложение. С помощью gii накидал модели, круды - все работает, все вроде замечательно.
Но потом тебя просят связать вот ту @евинку с этой фиговинкой, и чтобы, в рез-те, получился серо-буро-малиновый конь в крапинку. И я не утрирую. Зачастую бизнес логика, которую требуется реализовать, именно так и выглядит.

И если все делать как мы накидали в прототипе, однажды мы поймем, что мы попали в ад. Мы боимся что-то менять, потому что у нас все в одной куче, все зависит от всего. Подробности тут: https://habr.com/ru/post/273615/

Если проект простой, в нем нет какой-то замороченной бизнес логики, то все пофиг. Но за простые проекты деньги не платят, увы. Они нужны чисто для собственного развития.

Если ты придешь в бизнес, продавать свои навыки разработчика, то логика будет огого. И тут возможны, варианты:
1. Наговнокодил и ушел
2. Сделал более-менее нормально и не ушел, нормально работаешь с приложением, развиваешь его, тебе не стыдно передать приложение в др. руки.

Я попал на первый вариант, когда предшественник не думал об архитектуре вообще, контроллеры по тысяче строк, супербожественные модели, копипаст где можно и где нельзя. Ребят, я порой ловлю себя, на кровожадных мыслях: я хочу найти этого разраба и долго бить его головой ап стену, чтобы он больше никогда так не делал.

И все начинается именно с таких, или похожих, мыслей: а зачем нужна отдельная модель для поиска, если все можно прописать в объекте AR, который работает с БД.

А попробуйте написать приложение так, чтобы объекты AR работали только с БД. Объекты для поиска данных отвечали только за поиск. Контроллер был бы именно контроллером: он должен быть очень тонким - принял запрос, отдал его модели, кинул ответ в вьюху. Модель - это не отдельный какой-то класс, а несколько классов (слой), в которых прописана вся бизнес логика, объект формы - это именно объект для работы с конкретной формой, а не объект AR etc ...
Все примеры есть в сети.

И вот когда вы все разнесете всё по своим местам, вам же самому будет намного легче поддерживать свой проект, и вы сможете спать спокойно, не боясь что вас будут бить головой ап стену :)
Вот за что я не люблю линукс, так это за свои кривые, временами, руки
Brainfuck
Сообщения: 313
Зарегистрирован: 2018.02.19, 14:20

Re: Фильтрация GridView

Сообщение Brainfuck »

proctoleha писал(а): 2019.04.27, 12:59
Чувак я вполне осознаю как это все убого. Говнокодю на Yii от того что пока не могу найти работу на Symfony (вот на чем бы я хотел писать реально). Или еще лучше вообще не на php (я изначально большой любитель C#/Java). А так да - AR это ужас и печаль. Недаром его назвали антипаттерном.
Ответить