Plugins 如何使用Symfony 2捆绑包设计灵活的管理面板?
我想创建一个管理包,它以某种方式检测其他包,并尝试将它们添加到菜单和相同的RBAC上下文中 例如:Plugins 如何使用Symfony 2捆绑包设计灵活的管理面板?,plugins,symfony,admin,Plugins,Symfony,Admin,我想创建一个管理包,它以某种方式检测其他包,并尝试将它们添加到菜单和相同的RBAC上下文中 例如: AdminBundle定义了一个需要身份验证和授权的路由/管理/仪表板。在那里,您可以看到菜单中的3项,例如:仪表板、配置(数据库中存储的一些配置)和用户(用户的CRUD,可在UserBundle中找到) 然后有人添加了一个ProductBundle,用于处理电子商务产品或其他方面的CRUD。不知何故,在不修改AdminBundle中的任何代码的情况下,我们现在在/admin/dashboard
- 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
中创建一个服务,并使用标记将其他类加载到其中,其中包含所需的数据
希望这是有意义的,也许其他人会有更好的解决办法,我也很想听听,因为这也是我目前正在努力解决的问题。很有意思。我还没有用过标签系统,我会看看的。谢谢你的邀请。我还没有用过标签系统,我会看看的。谢谢