我最近做了一个供应商/安装,现在我的奏鸣曲管理员因以下错误而被打破:
第92行的SonataAdminBundle :: standard_layout.html.twig中不存在“”的项目“角色”
这是树枝代码:
{% if app.security %}
{% for role in app.security.token.roles %}
{% if not allowed %}
{% set allowed = role.role == 'ROLE_SONATA_ADMIN' %}
{% endif %}
{% endfor %}
{% endif %}
有人有任何想法吗?
谢谢!
答案 0 :(得分:1)
我通过管理包搜索了blame选项,它来自7天前的提交
所以你需要做的就是去deps.lock
找到adminBundle提交哈希(在我的例子中,它以4a开头....) 用导致问题的提交之前提交的25b401e6271ee0fd896d700d0328b06994e4e138替换哈希
我试过了,仪表板正常工作
祝你好运修改强> 的
小心不要使用php bin / vendor更新,因为它会更新提交哈希
使用php bin / vendor install
答案 1 :(得分:0)
我有同样的问题。我的错误来自其他行:
Item "roles" for "" does not exist in SonataAdminBundle::standard_layout.html.twig at line 11
我的安全文件如下:
security:
encoders:
Symfony\Component\Security\Core\User\User: plaintext
role_hierarchy:
ROLE_ADMIN: ROLE_USER
ROLE_SUPER_ADMIN: [ROLE_USER, ROLE_ADMIN, ROLE_ALLOWED_TO_SWITCH]
providers:
in_memory:
users:
user: { password: userpass, roles: [ 'ROLE_USER' ] }
admin: { password: adminpass, roles: [ 'ROLE_ADMIN' ] }
firewalls:
dev:
pattern: ^/(_(profiler|wdt)|css|images|js)/
security: false
login:
pattern: ^/demo/secured/login$
security: false
secured_area:
pattern: ^/demo/secured/
form_login:
check_path: /demo/secured/login_check
login_path: /demo/secured/login
logout:
path: /demo/secured/logout
target: /demo/
#anonymous: ~
#http_basic:
# realm: "Secured Demo Area"
access_control:
#- { path: ^/login, roles: IS_AUTHENTICATED_ANONYMOUSLY, requires_channel: https }
#- { path: ^/_internal, roles: IS_AUTHENTICATED_ANONYMOUSLY, ip: 127.0.0.1 }
和配置文件的一部分:
services:
admin.article:
class: Acme\GaudeamusBundle\Admin\ArticleAdmin
tags:
- { name: sonata.admin, manager_type: orm, group: Articles, label: Articles }
arguments: [null, Acme\GaudeamusBundle\Entity\Article, SonataAdminBundle:CRUD]
admin.menu:
class: Acme\GaudeamusBundle\Admin\MenuAdmin
tags:
- { name: sonata.admin, manager_type: orm, group: Menu, label: Menu }
arguments: [null, Acme\GaudeamusBundle\Entity\Menu, SonataAdminBundle:CRUD]
# app/config/config.yml
sonata_block:
default_contexts: [cms]
blocks:
sonata.admin.block.admin_list:
contexts: [admin]
#sonata.admin_doctrine_orm.block.audit:
# contexts: [admin]
sonata.block.service.text:
sonata.block.service.action:
sonata.block.service.rss:
缓存清除没有帮助: - (
答案 2 :(得分:0)
以下是修正:https://github.com/Wiakowe/SonataAdminBundle/commit/e139527c05b22176ee3efab987ebe752668d4489
删除第90-99行并替换为以下内容:
{% if app.security and is_granted('ROLE_SONATA_ADMIN') %}
答案 3 :(得分:0)
我对最新版本的SonataAdminBundle遇到了同样的问题。如果您允许每个人打开您的管理面板,则会出现此问题。至少对于工作现场来说,这不是通常的解决方案。
要为每个人授予对您的管理面板的访问权限,请执行以下操作。将路径 / admin 放在防火墙下,在 security.firewals 部分
部分中添加 security.yml 文件 admin_area:
pattern: ^/admin
anonymous: ~
因此,每个客户都将被授权为具有现有令牌的匿名用户,并且不会出现错误。
P.S。对不起语法错误,但我想每个人都会理解我:)。