【发布时间】: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