Pull to refresh

Comments 6

На версию 2.0 вам несколько советов:
  • Разберитесь, как работает DI, и что можно передавать в аргументах в конструктор сервиса. Например, непонятно, зачем передавать имя EntityManager, когда можно передать сам сервис. А если вы будете базировать свое решение на сервисном слое, а не на наследовании контроллеров, будет вообще прекрасно.
  • Попробуйте разделить ответственность между компонентами. Типичный симфонийский подход — тонкий контроллер, толстый сервисный слой. Сейчас у вас очень толстый контроллер, и из-за этого вообще сложно воспринимать код.
  • Билдер фильтра нужно очеловечивать очень тщательно. Сейчас туда передается слишком уж много параметров — или уж тогда инкапсулируйте эту логику в конфигурационные объекты, или вообще пересмотрите этот API (а лучше и то, и то)
Несколько идей. Посмотрите на реализацию Symfony Forms в качестве источника вдохновения. Вместо того что бы заставлять пользователя наследоваться от ваших контроллеров (это вообще очень неудобный подход) лучше реализовать что-то вроде GridBuilder по аналогии с FormBuilder (с автоопределением типов на основе мэппинга доктрины и все такое).

Сейчас же ваш вариант выглядит даже хуже SonataAdminBundle который я дико не люблю.
Все где есть жирный AdminController зло.
Спасибо за комментарии.
Я согласен, что для формирования списка пользователей или списка контента обычного сайта готовить такие контроллеры будет утомительно (хотя я, наверное, по привычке, пользуюсь этим контроллером и в обычных админках).
Наверное мне надо было аргументировать, почему выбран вариант наследования.
Главная причина — возможность переопределить нужный метод. Где-то в 5% случаях мне это требуется. Например: форма фильтров обычная, а «накладывать» значения полей формы на запрос надо с дополнительными условиями (или проверками). Этот бандл писался для CRM системы — отчёты там иногда приходится реализовывать очень нестандартные.

Сам писал аналогичный бандл для CRM, взгляните возможно подчерпнете что-то для своего детища.
Sign up to leave a comment.

Articles