KnpMenu
编辑该页面KnpMenu
管理有KnpMenu集成。它集成了一个菜单KnpMenu库。这个菜单可以SonataAdmin服务,菜单创建Knp菜单自定义控制器的提供者或路线。
添加一个自定义控制器进入菜单
添加一个自定义控制器进入管理菜单:
创建控制器:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
使用ob娱乐下载\组件\HttpFoundation\响应;最后类BlogController{/ * * *@Route(name = " /博客”“blog_home”) * /公共函数blogAction():响应{/ /……}/ * * *@Route(“/博客/文章/{正如}”,name = " blog_article ") * /公共函数ArticleAction(字符串美元正如):响应{/ /……}}
添加控制器路由条目的菜单:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
#配置/包/ sonata_admin.yamlsonata_admin:指示板:组:欧宝平台是合法的吗新闻:标签:~translation_domain:~项目:- - - - - -sonata.欧宝平台是合法的吗news.admin.post- - - - - -路线:blog_home标签:博客- - - - - -路线:blog_articleroute_params:{正如:3}标签:文章
如果你想展示你的路线与不同角色的用户,您可以配置为每个路线。如果这不是设置、组的角色将被检查。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
#配置/包/ sonata_admin.yamlsonata_admin:指示板:组:欧宝平台是合法的吗新闻:标签:~translation_domain:~项目:- - - - - -sonata.欧宝平台是合法的吗news.admin.post- - - - - -路线:blog_home标签:博客角色:[' ROLE_FOO ',“ROLE_BAR”]- - - - - -路线:blog_articleroute_params:{正如:3}标签:文章角色:[' ROLE_ADMIN ',“ROLE_SONATA_ADMIN”]
你也可以覆盖模板使用的knp_menu奏鸣曲。默认的一个是“@SonataAdmin /菜单/ sonata_menu.html.twig”:
1 2 3 4 5
#配置/包/ sonata_admin.yamlsonata_admin:模板:knp_menu_template:“@ApplicationAdmin /菜单/ custom_knp_menu.html.twig '
现在你有一个包含一个链接到一个菜单组奏鸣曲管理通过其id,您的博客和一个特定的文章。
使用一个菜单提供者
如上图所示,主要方式是通过声明声明你的菜单项在奏鸣曲管理配置文件。在某些情况下,您可能必须创建一个更复杂的菜单根据您的业务逻辑。这是可能通过使用菜单提供者来填充整个菜单组。这是完成了提供者
配置值。
以下配置使用一个菜单提供者填充菜单组my_group
:
1 2 3 4 5 6 7 8
#配置/包/ sonata_admin.yamlsonata_admin:指示板:组:my_group:供应商:“MyBundle: MyMenuProvider: getMyMenu”图标:“fas fa-edit”#还支持html
KnpMenuBundle你可以创建一个自定义菜单使用生成器类或宣布它作为一个服务。请参见Knp文欧宝官网下载app档为进一步的信息。
在奏鸣曲中,无论你选择何种实现,你只需要提供菜单别名提供者配置关键:
- 如果你使用一个构建器类,菜单别名应该类似
MyBundle: MyMenuProvider: getMyMenu
。 - 如果你正在使用一个服务,菜单中设置的别名是别名
knp_menu.menu
标签。在接下来的例子中my_menu_alias
:
1 2 3
<服务id=“my_menu_provider”类=“MyBundle / MyDirectory / MyMenuProvider”><标签的名字=“knp_menu.menu”别名=“my_menu_alias”/ >< /服务>
请注意,当使用提供者的选择,你不能通过配置设置菜单标签。这是在您的自定义菜单。
扩展菜单
您可以修改菜单通过事件。你可以尽可能多的听众注册事件的名称sonata.admin.event.configure.menu.sidebar
:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
/ / src / EventListener / MenuBuilderListener.php名称空间应用程序\EventListener;使用奏鸣曲\AdminBundle\事件\ConfigureMenuEvent;最后类MenuBuilderListener{公共函数addMenuItems(ConfigureMenuEvent美元事件):无效{美元菜单=美元事件- >getMenu ();美元孩子=美元菜单- >addChild (“报告”,(“标签”= >日常和月度报告,“路线”= >“app_reports_index”,)- >setExtras ([“图标”= >“fas fa-bar-chart”,/ /还支持html]);}}
1 2 3 4 5 6 7
#配置/ services.yaml服务:app.menu_listener:类:App \ EventListener \ MenuBuilderListener标签:- - - - - -{名称:kernel.event_listener,事件:sonata.admin.event.configure.menu.sidebar,方法:addMenuItems}
请参见使用事件允许扩展菜单为进一步的信息。
隐藏菜单项
您可以修改菜单隐藏一些菜单项。您需要添加show_in_dashboard
选择您的管理服务或删除的菜单项sonata_admin
仪表板组配置:
1 2 3 4 5 6
#配置/ services.yamlsonata_admin.admin.post:类:奏鸣曲\ AdminBundle \ Admin \ PostAdmin标签:- - - - - -{名称:sonata.admin,model_class:奏鸣曲\ AdminBundle \实体\,控制器:奏鸣曲\ \ CRUDController AdminBundle \控制器,manager_type:orm,组:管理,标签:篇文章,show_in_dashboard:假}
1 2 3 4 5 6 7 8 9 10 11 12 13 14
#配置/包/ sonata_admin.yamlsonata_admin:指示板:组:欧宝平台是合法的吗新闻:标签:~translation_domain:~项目:#或删除sonata.news.admin发表评论。欧宝平台是合法的吗从菜单中发布声明隐藏它。#——sonata.n欧宝平台是合法的吗ews.admin.post- - - - - -路线:blog_home标签:博客- - - - - -sonata.欧宝平台是合法的吗news.admin.news
保持菜单组开放
你可以添加keep_open
选项菜单组保持集团总是开放和忽略打开/关闭效果:
1 2 3 4 5 6 7 8 9 10 11 12 13
#配置/包/ sonata_admin.yamlsonata_admin:指示板:组:sonata.admin.group.content:keep_open:真正的标签:sonata_mediatranslation_domain:SonataMediaBundle图标:“fas fa-image”#还支持html项目:- - - - - -sonata.media.admin.media- - - - - -sonata.media.admin.gallery
没有树状视图显示菜单项
您可以修改没有treeview菜单显示菜单项。您需要添加选项on_top
在你的管理服务或sonata_admin仪表板组配置:
1 2 3 4 5 6
#配置/ services.yamlsonata_admin.admin.post:类:奏鸣曲\ AdminBundle \ Admin \ PostAdmin标签:- - - - - -{名称:sonata.admin,model_class:奏鸣曲\ AdminBundle \实体\,控制器:奏鸣曲\ \ CRUDController AdminBundle \控制器,manager_type:orm,组:管理,标签:篇文章,on_top:真正的}
1 2 3 4 5 6 7 8 9 10 11
#配置/包/ sonata_admin.yamlsonata_admin:指示板:组:欧宝平台是合法的吗新闻:on_top:真正的标签:~translation_domain:~项目:- - - - - -sonata.欧宝平台是合法的吗news.admin.post
在这张截图中,我们添加了on_top
选项标签
和博客
管理服务。
你不能使用这个选项为两个或两个以上的项目在同一时间:
1 2 3 4 5 6 7 8 9 10 11 12 13
#配置/包/ sonata_admin.yamlsonata_admin:指示板:组:欧宝平台是合法的吗新闻:on_top:真正的标签:~translation_domain:~项目:- - - - - -sonata.欧宝平台是合法的吗news.admin.post- - - - - -路线:blog_home标签:博客
在这种情况下,你有一个例外:“你不能使用on_top
选择多个同名组”。