Фільтрація даних у Symfony

Всім любителям Symfony відомо що в ній немає компонента фільтр.
Є чудові та зручні Constraints та навіть була спроба створити на подобі їх фільтри issue на Github, але ніхто так і не взявся це зробити.
Коли я в черговий раз зіткнувся із завданням фільтрації великої кількості даних, отриманих від користувача, я зрозумів що пора вирішити задачу фільтрації як більш глобально/красиво/зручно.
Провівши якийсь research я зрозумів що нічого кардинально нового в фильтрировании на php не з'явилося. Є 2 популярних компоненти:
Прошу зауважити що останній <a href=«github.com/rdohms/dms-filter/pulse/monthly>не зовсім добре підтримується автором.
Для DMS-Filter є symfony bundle але він не сумісний з Symfony 3. Та й код його не сподобався, так як я розумів що можна зробити все трохи простіше.
Проаналізувавши ситуацію, я зрозумів що найшвидший і надійний спосіб написати bundle для фільтрації який буде використовувати добре документовані і покриття тестами фільтри з Zend Filter. Так само хочу додати, що в минулому я багато працював з Zend Framework 1 і мені вони були близькі і зрозумілі.
Мені хотілося зробити логіку роботи фільтрів на подобі Symfony Constraints.
В результаті був написаний bundle, що додає сервіс який може бути використаний для фільтрації об'єкта на основі анотацій. Крім того, bundle може фільтрувати форми, якщо він знаходить анотований об'єкт.
У процесі написання модуля складнощів не виникло. Ось розділи документації які я використав під час написання:
Мені здається не варто детально описувати як користуватися bundle у цій публікації так як вона більше додає навіщо я його написав. Та й дивно просто копіювати інформацію з одного місця в інше.
Документацію по використанню bundla і сам bundle ви можете знайти на GitHub FilterBundle.
Хотів би дізнатися у спільноти, а як ви вирішуєте завдання фільтра Symfony?

Джерело: Хабрахабр

0 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.