SonataAdmin,在左侧添加菜单
Posted
技术标签:
【中文标题】SonataAdmin,在左侧添加菜单【英文标题】:SonataAdmin, add menu on left 【发布时间】:2014-09-28 07:16:17 【问题描述】:我正在研究 Symfony2 和 SonataAdminBundle。
我需要知道如何在仪表板的左侧添加菜单?喜欢在屏幕上:
我需要在页面左侧放置仪表板块(在我的屏幕上显示为深灰色).. 我该怎么做?
你可以在SonataAdmin的demo上看到http://demo.sonata-project.org/admin/dashboard, login admin, apssword admin
【问题讨论】:
你运行什么版本的奏鸣曲管理员?因为它只在最后一个(不是官方的)。应该是用knp菜单配置的东西,官方文档还没说呢 我的 composer.json 中有 dev-master 如果你有时间,你可以添加github.com/sonata-project/SonataUserBundle,看看他们是如何在左侧菜单中添加项目的。你愿意发布你的最终答案吗?我很想知道如何自定义它:) 你可以看看名为“menu”的目录,有管理侧边菜单的事件 你能选择正确的答案吗? 【参考方案1】:http://blog.eike.se/2014/03/custom-page-controller-in-sonata-admin.html
这篇文章对我有帮助。
扩展模板
vendor/sonata-project/admin-bundle/Resources/views/standard_layout.html.twig
覆盖块
% extends 'SonataAdminBundle::standard_layout.html.twig' %
% block side_bar_after_nav %
YOUR CUSTOM MENU
% endblock %
【讨论】:
我可以确认此解决方案有效。该链接提到了top_bar_after_nav
,但它已重命名为side_bar_after_nav
。【参考方案2】:
我刚刚在 security.yml 中将 ROLE_SONATA_ADMIN 添加到 ROLE_ADMIN:
security:
role_hierarchy:
ROLE_ADMIN: [ROLE_USER, ROLE_SONATA_ADMIN]
它终于出现了。欲了解更多信息,请查看:https://github.com/sonata-project/SonataAdminBundle/issues/2321
【讨论】:
【参考方案3】:首先要做的是在这个路径下打开这个文件:
\wamp\www\YourProject\vendor\sonata-project\admin-bundle\Resources\view \standard_layout.html.twig
然后查找:ROLE_SONATA_ADMIN
(使用 Ctrl+F)然后更改为您用于登录管理仪表板的角色我正在使用ROLE_ADMIN
,然后保存文件,关闭它,检查你的管理仪表板,你会找到你要找的东西。
希望它会起作用
【讨论】:
或者你可以在你的security.yml
中从ROLE_SONATA_ADMIN
扩展ROLE_ADMIN
这应该是公认的答案,但上面的评论是扩展 ROLE_SONATA_ADMIN !
永远不要直接接触供应商。始终尝试使用包继承来使您的应用程序尽可能可重用。【参考方案4】:
好吧,如果你想使用奏鸣曲生成的自动菜单,你可以使用这个步骤来达到目的:
解决方案
从config.yml
覆盖默认的奏鸣曲布局树枝文件
sonata_admin:
templates:
layout: ::layout.html.twig
你的::layout.html.twig
:
% extends 'SonataAdminBundle::standard_layout.html.twig' %
% block side_bar_nav %
knp_menu_render('sonata_admin_sidebar', template: sonata_admin.adminPool.getTemplate('knp_menu_template'))
% endblock %
为什么采用这种解决方案?
由于默认的SonataAdminBundle::standard_layout.html.twig
会检查用户是否拥有ROLE_SONATA_ADMIN
权限(并且您可能不会使用sonata user bundle
),因此您需要覆盖默认情况下的权限检查过程:
% block side_bar_nav %
% if app.user and is_granted('ROLE_SONATA_ADMIN') %
knp_menu_render('sonata_admin_sidebar', template: sonata_admin.adminPool.getTemplate('knp_menu_template'))
% endif %
% endblock side_bar_nav %
我认为这是使用左侧边栏导航按钮的最简单方法。
【讨论】:
【参考方案5】:终于好了,
似乎他们更新了奏鸣曲管理捆绑文档,
看看这个 => http://sonata-project.org/bundles/admin/master/doc/reference/architecture.html
或与用户捆绑:
http://sonata-project.org/bundles/user/master/doc/reference/user_dashboard.html
希望它会起作用
【讨论】:
我没有使用 userbundle,我不知道文档如何帮助我? “dashboard”下面有一个“menu”配置可以添加到你的config.yml中,即使它是为sonata admin bundle 2.3设计的,也值得尝试看看它在beta预览中是否有效:)【参考方案6】:做两件事:
在自定义包的 Resources/views
文件夹中创建一个名为 standard_layout.html.twig
的模板。将此添加到该模板:
% extends 'SonataAdminBundle::standard_layout.html.twig' %
% block side_bar_nav %
//add your code here
% endblock side_bar_nav %
PS:看vendor/sonata-project/admin-bundle/Resources/views/standard_layout.html.twig
中的块side_bar_nav
的方向
-
在
app/config/config.yml
(或您的配置文件所在的任何位置)中,添加:
sonata_admin:
templates:
layout: YourBundle::standard_layout.html.twig
我建议使用YourBundle:Admin:standard_layout.html.twig
将所有管理模板组织到一个Admin
文件夹中。您需要相应地在步骤 1 中更改模板的位置
【讨论】:
以上是关于SonataAdmin,在左侧添加菜单的主要内容,如果未能解决你的问题,请参考以下文章