SonataAdminBundle: как добавить произвольную страницу к сущности
У меня часто возникает необходимость добавлять произвольные страницы (например для ajax’a), связанные с конкретной сущностью, или для целого класса сущностей.
Добавление страницы начинается с добавления роута в админ классе. За это отвечает метод configureRoutes:
В примере я рассмотрел два случая:
- Роут привязан к конкретной сущности, о чем свидетельствует наличие метода $this->getRouterIdParameter() в роуте, на место которого будет подставлен id сущности, в итоге на страницу можно будет попасть по роуту вида bla/bla/12/members
- Роут привязан не к конкретной сущности, а к админ классу, на страницу можно попасть по роуту вида bla/bla/getProjects
Напомню, что контроллер указывается в аргументах, в описании сервиса админ класса. Более подробно об этом я писал в другой статье.Ну и последний шаг - создание шаблона для страницы. Если страницы без кастомного дизайна, и вы намерены придерживаться общего стиля Sonata, то вам необходимо унаследовать стандартный шаблон сонаты: Разумеется, вы можете свободно переопределять такие блоки как javascripts и stylesheets. На этом вроде все =)