Php 根据用户角色在仪表板上显示项目

Php 根据用户角色在仪表板上显示项目,php,symfony,sonata-admin,symfony-sonata,sonata-user-bundle,Php,Symfony,Sonata Admin,Symfony Sonata,Sonata User Bundle,我是Symfony2的新手,为了公司的需要,我使用了Sonata管理和用户包 我想知道是否可以根据登录用户的角色在仪表板上隐藏或显示项目 例如,我有几个实体由Sonata AdminBundle管理(用户、公司、任务、站点等…管理),我只想将用户管理显示给超级管理员,将公司和站点管理显示给另一个角色(例如站点\管理员),将任务显示给第三个角色 你曾经面对过这种情况吗?你能给我一个解决方案或线索,让我直接找到解决方案吗 非常感谢, eES仅对管理员组(创建组)使用并启用与用户相关的权限。然后将管理

我是Symfony2的新手,为了公司的需要,我使用了Sonata管理和用户包

我想知道是否可以根据登录用户的角色在仪表板上隐藏或显示项目

例如,我有几个实体由Sonata AdminBundle管理(用户、公司、任务、站点等…管理),我只想将用户管理显示给超级管理员,将公司和站点管理显示给另一个角色(例如站点\管理员),将任务显示给第三个角色

你曾经面对过这种情况吗?你能给我一个解决方案或线索,让我直接找到解决方案吗

非常感谢,


eES

仅对管理员组(创建组)使用并启用与用户相关的权限。然后将管理员用户分配到管理员组。Sonata Admin将选择限制,并且只向管理员显示仪表板项目。

此外,您可以通过以下方式在用户板中隐藏和显示块:

# app/config/config.yml
sonata_admin:
dashboard:
    groups:
        acme.admin.group.content:
            label: acme.admin.group.content
            label_catalogue: AcmeDemoBundle
            items:
                - sonata.admin.post
        acme.admin.group.blog:
            items: ~
            item_adds:
                - sonata.admin.page
            roles: [ ROLE_ONE, ROLE_TWO ]
        acme.admin.group.misc: ~
如前所述

请注意,这只会更改块的可见性,而不会更改可访问性。 如果没有限制,人们仍然可以在浏览器中打开链接,如果他们知道的话


如果您使用上一个答案实现sonata.admin.security.handler.role,如果用户没有正确的角色,该块应该自动隐藏。

是的,您必须在配置中设置
sonata\u admin:security:handler:sonata.admin.security.handler.role
。然后,您就可以设置访问管理的不同部分所需的角色。非常感谢您的回答,虽然有点晚,但现在一切都很好:)