Я не знаю о полном решении плагинов, но мой подход был бы:
Существует один "главный бэкэнд", который называется MasterAdminBundle
ради разговора. Этот комплект содержит файл base.html.twig, который просто помогает определить панель навигации в области администрирования, и {% block content %}
. Он также имеет вид MenuService
, который отображает меню. Я бы хотел, чтобы мои другие пакеты регистрировались в этой службе в подклассе AdminMenu
посредством использования системы тегов , так же как Voter
может зарегистрироваться в Security Context
(см. здесь ).
В base.html.twig я бы, вероятно, использовал Embedded Controller для визуализации меню.
Теперь при наличии такого рода фреймворков ваши другие пакеты могут оставаться инкапсулированными, сохраняя свои собственные маршруты и интерфейсы администратора:
ProductController
теперь также будет иметь ProductAdminController
, где вы можете использовать префикс маршрута @Route("/admin")
в определении класса. Любые маршруты могут затем отображать шаблоны внутри пакета, поскольку шаблоны хранятся под именем контроллера. Acme\ProductBundle\Resources\views\ProductAdmin\edit_products.html.twig
, пока они расширяют base.html.twig
с MasterAdminBundle
и помещают их содержимое в блок content
.
Для других вещей, таких как панель инструментов, в которую вы хотите подключить другие комплекты, я, вероятно, просто продолжу идти тем же путем, создаю службу в MasterAdminBundle
и использую теги для загрузки в нее других классов с необходимыми данными.
Надеюсь, что это имеет смысл, может быть, другие найдут лучшее решение для этого, мне также интересно услышать, так как это то, что я пытаюсь решить и в данный момент.