创建子管理员
编辑本页创建子管理员
假设你有一个PlaylistAdmin
和一个VideoAdmin
.属性可以选择性地声明VideoAdmin
做一个孩子PlaylistAdmin
.这将创建新的路线,例如,/播放列表/ {id} /视频/列表
,在那里,视频将自动通过上传进行过滤。
要做到这一点,首先需要调用调用addChild
方法。PlaylistAdmin
服务配置中有两个参数,子管理员名(在本例中VideoAdmin
service)和将我们的子实体与其父实体关联起来的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$菜单、字符串$行动, AdminInterface$childAdmin= 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许可证。