Фильтрация данных в Symfony

PHPSymfonyDoctrine ORM

Всем любителям Symfony известно что в ней нету компонента фильтр.
Есть замечательные и удобные Constraints и даже была попытка создать на подобии их фильтры issue на Github, но никто так и не взялся это сделать.


Когда я в очередной раз столкнулся с задачей фильтрации большого количества данных, полученных от пользователя, я понял что пора решить задачу фильтрации как то более глобально/красиво/удобно.


Проведя некий research я понял что ничего кардинально нового в фильтрировании на php не появилось. Есть 2 популярных компонента:



Прошу заметить что последний не совсем хорошо поддерживается автором.
Для DMS-Filter есть symfony bundle но он не совместим с Symfony 3. Да и код его не понравился, так как я понимал что можно сделать все немного проще.


Проанализировав ситуацию, я понял что самый быстрый и надежный способ написать bundle для фильтрации который будет использовать хорошо документированные и покрытие тестами фильтры из Zend Filter. Так же хочу добавить что в прошлом я много работал с Zend Framework 1 и мне они были близки и понятны.


Мне хотелось сделать логику работы фильтров на подобии Symfony Constraints.
В итоге был написан bundle, что добавляет сервис который может быть использован для фильтрации объекта на основе аннотаций. Кроме того, bundle может фильтровать формы, если он находит аннотированный объект.


В процессе написания модуля сложностей не возникло. Вот разделы документации которые я использовал во время написания:



Мне кажется не стоит подробно описывать как пользоваться bundle в данной публикации так как она больше обьясняет зачем я его написал. Да и странно просто копировать информацию с одного места в другое.
Документацию по использованию bundla и сам bundle вы можете найти на GitHub FilterBundle.


Хотел бы узнать у сообщества, а как вы решаете задачи по фильтрации в Symfony?

Теги:symfonysymfony bundlefiltersdoctrineforms
Хабы: PHP Symfony Doctrine ORM
+9
10k 34
Комментарии 25

Похожие публикации

PHP Developer (Symfony)
от 120 000 ₽4Real LTDМожно удаленно
Бэкенд Symfony разработчик (Middle, Senior) - Remote only
от 100 000 до 200 000 ₽Pokupo.ruМожно удаленно
PHP-разработчик Highload (Symfony)
до 220 000 ₽OFFERRUMСанкт-Петербург
Разработчик PHP (Symfony)
от 150 000 ₽СберЛогистикаМоскваМожно удаленно
Symfony Middle developer
от 150 000 ₽RetailCRMМожно удаленно

Лучшие публикации за сутки