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,在左侧添加菜单的主要内容,如果未能解决你的问题,请参考以下文章

QQ空间HD-添加左侧菜单栏内容

如何在左侧的操作栏上充气菜单

PHP系统左侧菜单栏的管理与实现

如何用java做出左侧是菜单栏,单击,右侧可进行页面切换的效果,求源代码

如何仅在某些页面上隐藏我的左侧导航菜单

LWUIT 形式的左右命令菜单