Все поклонники Symfony знают, что в ней нет компонента фильтра.
Есть замечательные и удобные Ограничения и была даже попытка создать подобные им фильтры проблема на Github , но никто не взялся это сделать.
Когда передо мной в очередной раз встала задача фильтрации большого количества данных, полученных от пользователя, я понял, что пришло время решить проблему фильтрации более глобально/красиво/удобно.
Проведя небольшое исследование, я понял, что ничего радикально нового в фильтрации в PHP не появилось.
Есть 2 популярных компонента:
Обратите внимание, что последний не очень хорошо поддерживается автором .Для DMS-Filter есть пакет Symfony но он не совместим с Symfony 3. И код мне не понравился, так как я понимал, что все можно сделать немного проще.
Проанализировав ситуацию, я понял, что самым быстрым и надежным способом написать бандл для фильтрации будет использование хорошо документированных и проверенных фильтров от Zend Filter. Еще хочу добавить, что раньше я много работал с Zend Framework 1 и они были мне близки и понятны.
Я хотел сделать логику фильтра похожей на ограничения Symfony. В результате был написан бандл, добавляющий сервис, с помощью которого можно фильтровать объект на основе аннотаций.
Кроме того, пакет может фильтровать формы, если находит аннотированный объект. Никаких сложностей в процессе написания модуля не возникло.
Вот разделы документации, которые я использовал при написании:
- Как создать расширение типа формы
- События формы
- Как динамически изменять формы с помощью событий формы
- Как зарегистрировать прослушиватели событий и подписчиков
И странно просто копировать информацию из одного места в другое.
Вы можете найти документацию по использованию Bundla и самого пакета на GitHub. ФильтрБундл .
Я хотел бы спросить сообщество, как вы решаете проблемы с фильтрацией в Symfony? Теги: #symfony #symfony Bundle #filters #doctrine #forms #php #symfony #Doctrine ORM
-
Вам Действительно Нужны Все Эти Сценарии?
19 Oct, 24 -
Крестики-Нолики На Эрланге
19 Oct, 24 -
Быстрый Сайт
19 Oct, 24 -
Видеоотчеты С Конференции Codefest 2014
19 Oct, 24