【问题标题】:Show dashboard groups depending on role (without acl groups)根据角色显示仪表板组(无 acl 组)
【发布时间】:2015-09-20 00:14:51
【问题描述】:

我正在尝试在仪表板上显示多个部分,具体取决于登录用户的角色。

我不使用 ACL 组或类似的东西。我的 security.yml 中只有:

role_hierarchy:
    ROLE_COMPANY:     ROLE_USER
    ROLE_ADMIN:       [ROLE_COMPANY, ROLE_USER]
    ROLE_SUPER_ADMIN: [ROLE_ADMIN, ROLE_ALLOWED_TO_SWITCH]

我可以根据登录用户的角色登录并在我的列表视图中显示数据(工作概览示例)。

现在,当登录用户不是管理员时,我想在仪表板上隐藏一个部分。

在我的 admin.yml 我有:

services:
    sonata.admin.jobs:
        class: MyBundleName\Admin\JobAdmin
        tags:
            - { name: sonata.admin, manager_type: orm, group: "Job Manager", label: "Jobs", roles: ROLE_ADMIN }
        arguments:
            - ~
            - MyBundleName\Entity\Job
            -
        calls:
            - [ setTranslationDomain, [MyBundleName]]
            - [ setTemplate, [show, MyBundleName:Job:base_show.html.twig]]

    sonata.admin.applications:
        class: MyBundleName\Admin\ApplicationAdmin
        tags:
            - { name: sonata.admin, manager_type: orm, group: "Job Manager", label: "Applications" }
        arguments:
            - ~
            - MyBundleName\Entity\Application
            -
        calls:
            - [ setTranslationDomain, [MyBundleName]]

    sonata.admin.categories:
        class: MyBundleName\Admin\CategoryAdmin
        tags:
            - { name: sonata.admin, manager_type: orm, group: "Job Extra", label: "Categories" }
        arguments:
            - ~
            - MyBundleName\Entity\Category
            -
        calls:
            - [ setTranslationDomain, [MyBundleName]]

    sonata.admin.skills:
        class: MyBundleName\Admin\SkillAdmin
        tags:
            - { name: sonata.admin, manager_type: orm, group: "Job Extra", label: "Skills" }
        arguments:
            - ~
            - MyBundleName\Entity\Skill
            -
        calls:
            - [ setTranslationDomain, [MyBundleName]]

如您所见,我有 2 个组“Job Manager”和“Job Extra”。如果登录的用户不是管理员,我想隐藏“Job extra”组。 但是最简单的方法是什么?

【问题讨论】:

    标签: php symfony roles sonata-admin sonata


    【解决方案1】:

    您可以直接在 Twig 中检查您的用户角色:

    {% if is_granted('ROLE_USER') %} <div>Only show this<div> {% endif %}

    【讨论】:

    • 他正在使用树枝助手“sonata_block_render”,所以我现在无法真正加载哪个块..
    猜你喜欢
    • 2013-07-05
    • 2015-02-06
    • 1970-01-01
    • 2019-05-31
    • 2021-11-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多