创建子管理员

编辑本页

创建子管理员

假设你有一个PlaylistAdmin和一个VideoAdmin.属性可以选择性地声明VideoAdmin做一个孩子PlaylistAdmin.这将创建新的路线,例如,/播放列表/ {id} /视频/列表,在那里,视频将自动通过上传进行过滤。

要做到这一点,首先需要调用调用addChild方法。PlaylistAdmin服务配置中有两个参数,子管理员名(在本例中VideoAdminservice)和将我们的子实体与其父实体关联起来的Entity字段:

  • YAML
  • XML
1 2 3 4 5 6 7 8 9 10
#配置/ services.yamlApp \ Admin \ VideoAdmin:#标签,调用,等等App \ Admin \ PlaylistAdmin:电话:-[addChild,[' @App \ Admin \ VideoAdmin’,“播放列表”]]#或' [addChild, ['@App\Admin\VideoAdmin']] '如果没有#字段从Video实体访问播放列表

显示VideoAdmin扩展菜单PlaylistAdmin类:

12 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
名称空间应用程序管理使用Knp菜单ItemInterface作为MenuItemInterface使用奏鸣曲AdminBundle管理AbstractAdmin使用奏鸣曲AdminBundle管理AdminInterface最后PlaylistAdmin扩展AbstractAdmin受保护的函数configureTabMenu(MenuItemInterface菜单、字符串行动, AdminInterfacechildAdmin= null)无效如果(!childAdmin& & ! in_array (行动, (“编辑”“显示”))) {返回;}管理->isChild () ?->getParent ():id管理->getRequest ()->get (“id”);菜单->addChild (“查看播放列表”管理->generateMenuUrl (“显示”, (“id”= >id)));如果->isGranted (“编辑”)) {菜单->addChild (“编辑播放列表”管理->generateMenuUrl (“编辑”, (“id”= >id)));}如果->isGranted (“列表”)) {菜单->addChild (“管理视频”管理->generateMenuUrl (“App \ Admin \ VideoAdmin.list”, (“id”= >id)));}}}

也可以设置一个点分隔的值,比如post.author,如果您的父管理员和子管理员没有直接关系。

要注意,成为子管理员是可选的,这意味着常规路由将被创建,不管你是否真的需要它们。要消除它们,您可以重写configureRoutes方法:

12 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
名称空间应用程序管理使用奏鸣曲AdminBundle管理AbstractAdmin使用奏鸣曲AdminBundle路线RouteCollectionInterface最后VideoAdmin扩展AbstractAdmin受保护的函数configureRoutes(RouteCollectionInterface集合无效如果->isChild ()) {返回;}//父路由配置集合->明确的();}}

您可以将管理员嵌套到您希望的深度。

假设您想要向视频添加评论。

然后您可以添加您的CommentAdmin的子服务VideoAdmin管理服务。

最后,管理界面看起来是这样的:

子管理界面
此工作,包括代码示例,是根据创作共用BY-SA 3.0许可证。