Plugins 如何使用Symfony 2捆绑包设计灵活的管理面板?

Plugins 如何使用Symfony 2捆绑包设计灵活的管理面板?,plugins,symfony,admin,Plugins,Symfony,Admin,我想创建一个管理包,它以某种方式检测其他包,并尝试将它们添加到菜单和相同的RBAC上下文中 例如: AdminBundle定义了一个需要身份验证和授权的路由/管理/仪表板。在那里,您可以看到菜单中的3项,例如:仪表板、配置(数据库中存储的一些配置)和用户(用户的CRUD,可在UserBundle中找到) 然后有人添加了一个ProductBundle,用于处理电子商务产品或其他方面的CRUD。不知何故,在不修改AdminBundle中的任何代码的情况下,我们现在在/admin/dashboard

我想创建一个管理包,它以某种方式检测其他包,并尝试将它们添加到菜单和相同的RBAC上下文中

例如:

  • AdminBundle定义了一个需要身份验证和授权的路由/管理/仪表板。在那里,您可以看到菜单中的3项,例如:仪表板、配置(数据库中存储的一些配置)和用户(用户的CRUD,可在UserBundle中找到)
  • 然后有人添加了一个ProductBundle,用于处理电子商务产品或其他方面的CRUD。不知何故,在不修改AdminBundle中的任何代码的情况下,我们现在在/admin/dashboard中的菜单中有了一个新项目“products”
  • 稍后,不再需要产品CRUD,因此我们只需删除ProductBundle,它就会自动从管理仪表板菜单中消失

您将如何着手实施类似的内容?symfony 2中是否有类似插件设计的本机支持?

我不知道完整的插件解决方案,但我的方法是:

为了便于对话,有一个“主后端”称之为
MasterAdminBundle
。此捆绑包包含一个base.html.twig,它仅帮助定义管理区域的导航栏和一个
{%block content%}
。它还具有某种显示菜单的
MenuService
。我会让我的其他捆绑包通过使用注册
AdminMenu
子类,就像
投票者可以注册
安全上下文一样(请参阅)

在base.html.twig中,我可能会使用

现在,有了这种框架,您的其他捆绑包可以通过保留自己的管理路由和接口来保持封装:

ProductController
现在还有
ProductAdminController
,您可以在类定义上使用路由前缀
@route(“/admin”)
。然后,任何路由都可以从包中呈现模板,因为模板保存在控制器名称下
Acme\ProductBundle\Resources\views\ProductAdmin\edit\u products.html.twig
只要它们从
MasterAdminBundle
扩展
base.html.twig
,并将其内容放入
content

对于其他东西,比如你想要插入其他包的仪表板,我可能会继续使用相同的方法,在
MasterAdminBundle
中创建一个服务,并使用标记将其他类加载到其中,其中包含所需的数据


希望这是有意义的,也许其他人会有更好的解决方案,我也很想听听,因为这也是我目前正在努力解决的问题。

我不知道完整的插件解决方案,但我的方法是:

为了便于对话,有一个“主后端”称之为
MasterAdminBundle
。此捆绑包包含一个base.html.twig,它仅帮助定义管理区域的导航栏和一个
{%block content%}
。它还具有某种显示菜单的
MenuService
。我会让我的其他捆绑包通过使用注册
AdminMenu
子类,就像
投票者可以注册
安全上下文一样(请参阅)

在base.html.twig中,我可能会使用

现在,有了这种框架,您的其他捆绑包可以通过保留自己的管理路由和接口来保持封装:

ProductController
现在还有
ProductAdminController
,您可以在类定义上使用路由前缀
@route(“/admin”)
。然后,任何路由都可以从包中呈现模板,因为模板保存在控制器名称下
Acme\ProductBundle\Resources\views\ProductAdmin\edit\u products.html.twig
只要它们从
MasterAdminBundle
扩展
base.html.twig
,并将其内容放入
content

对于其他东西,比如你想要插入其他包的仪表板,我可能会继续使用相同的方法,在
MasterAdminBundle
中创建一个服务,并使用标记将其他类加载到其中,其中包含所需的数据


希望这是有意义的,也许其他人会有更好的解决办法,我也很想听听,因为这也是我目前正在努力解决的问题。

很有意思。我还没有用过标签系统,我会看看的。谢谢你的邀请。我还没有用过标签系统,我会看看的。谢谢