【问题标题】:SonataAdmin, add menu on leftSonataAdmin,在左侧添加菜单
【发布时间】: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”的目录,有管理侧边菜单的事件
  • 你能选择正确的答案吗?

标签: symfony sonata-admin


【解决方案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】:

    好吧,如果你想使用奏鸣曲生成的自动菜单,你可以使用这个步骤来达到目的:

    解决方案

    1. config.yml覆盖默认的奏鸣曲布局树枝文件

      sonata_admin:
          templates:
              layout:                         ::layout.html.twig
      
    2. 你的::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】:

      做两件事:

      1. 在自定义包的 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的方向

      1. app/config/config.yml(或您的配置文件所在的任何位置)中,添加:

      sonata_admin: templates: layout: YourBundle::standard_layout.html.twig

      我建议使用YourBundle:Admin:standard_layout.html.twig 将所有管理模板组织到一个Admin 文件夹中。您需要相应地在步骤 1 中更改模板的位置

      【讨论】:

        猜你喜欢
        • 2018-12-19
        • 2014-06-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多