[英]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.