繁体   English   中英

Symfony 2 - 顶级菜单未出现在Sonata管理员中

[英]Symfony 2 - Top menu not appearing in Sonata admin

顶级菜单没有出现在我的Sonata管理员中。 菜单仅出现在仪表板中。

我按照以下教程创建了博客功能的后端: http//sonata-project.org/bundles/doctrine-orm-admin/master/doc/tutorial/creating_your_first_admin_class/introduction.html

我也尝试配置app / config / config.yml,如下所示

sonata_admin:
    dashboard:
        groups:
            Blog:

但是没有获得预期的结果(即顶部菜单)。

从版本2.2开始,这是一个安全问题。 按照文档说明配置后,菜单将正确显示。

更新:此外,根据更改日志中的2012-06-05条目 ,用户必须具有角色ROLE_SONATA_ADMIN

如果你想在不这样做的情况下进行测试,你可以根据这个文件设置一个新的布局模板https//github.com/sonata-project/SonataAdminBundle/blob/master/Resources/views/standard_layout.html.twig ,但是在块sonata_top_bar_nav注释了与菜单绘图相关的一些行,如下所示:

{% block sonata_top_bar_nav %}
  {#% if app.security.token and is_granted('ROLE_SONATA_ADMIN') %#}
    {% for group in admin_pool.dashboardgroups %}
      {% set display = (group.roles is empty or is_granted('ROLE_SUPER_ADMIN') ) %}
        {% for role in group.roles if not display %}
          {% set display = is_granted(role) %}
        {% endfor %}

        {# Do not display the group label if no item in group is available #}
        {% set item_count = 0 %}
        {% if display %}
          {% for admin in group.items if item_count == 0 %}
            {% if admin.hasroute('list') and admin.isGranted('LIST') %}
              {% set item_count = item_count+1 %}
            {% endif %}
          {% endfor %}
        {% endif %}

        {#% if display and (item_count > 0) %#}
          <li class="dropdown">
            <a href="#" class="dropdown-toggle" data-toggle="dropdown">{{ group.label|trans({}, group.label_catalogue) }} <span class="caret"></span></a>
            <ul class="dropdown-menu">
            {% for admin in group.items %}
              {#% if admin.hasroute('list') and admin.isGranted('LIST') %#}
                <li><a href="{{ admin.generateUrl('list')}}">{{ admin.label|trans({}, admin.translationdomain) }}</a></li>
              {#% endif %#}
            {% endfor %}
            </ul>
          </li>
        {# % endif %#}
      {% endfor %}
    {#% endif %#}
  {% endblock %}

您需要SONATA_ROLE_ADMIN来显示菜单

您可以在security.yml为ROLE_ADMIN设置它以包含它

security:
    ...
    role_hierarchy:
        ...
        ROLE_ADMIN:       [ROLE_USER, ROLE_SONATA_ADMIN]
        ROLE_SUPER_ADMIN: [ROLE_USER, ROLE_ADMIN, ROLE_ALLOWED_TO_SWITCH]
        ...

config.yml文件中导入bundle yml文件。

例如:

imports:
    - { resource: @yourBundle/Resources/config/admin.yml }

你的admin.yml看起来像这样:

# website/yourBundle/Resources/config/admin.yml
services:
    sonata.admin.your:
        class: website\yourBundle\Admin\yourAdmin
        tags:
            - { name: sonata.admin, manager_type: orm, group: "Content", label: "Contact Management" }
        arguments:
            - ~
            - website\yourBundle\Entity\your
            - ~
        calls:
            - [ setTranslationDomain, [yourBundle]]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM