Symfony2 Sonata管理员错误

时间:2012-06-08 23:31:45

标签: symfony symfony-sonata

我最近做了一个供应商/安装,现在我的奏鸣曲管理员因以下错误而被打破:

第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 %}

有人有任何想法吗?

谢谢!

4 个答案:

答案 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。对不起语法错误,但我想每个人都会理解我:)。