您应该分别为每个管理员设置权限。在您的图片上,我看不到管理权限的管理包,除了关系包(GalleryHasMedia),当您对多对多关系进行操作时会显示该包。您只有ROLE_SONATA_MEDIA_ADMIN_GALLERY_HAS_MEDIA
为 STAFF 设置的权限。我可以想象您在仪表板或左侧边栏菜单上没有此关系的块。
首先,每次添加任何管理员时都应运行此命令(以防万一):
app/console sonata:admin:setup-acl
假设您拥有 SonataMediaBundle,您应该拥有以下 ROLE:
ROLE_SONATA_MEDIA_ADMIN_GALLERY_GUEST
ROLE_SONATA_MEDIA_ADMIN_GALLERY_STAFF
ROLE_SONATA_MEDIA_ADMIN_GALLERY_EDITOR
ROLE_SONATA_MEDIA_ADMIN_GALLERY_ADMIN
假设您将权限配置如下:
sonata_admin:
security:
handler: sonata.admin.security.handler.acl
# acl security information
information:
GUEST: [VIEW, LIST]
STAFF: [EDIT, LIST, CREATE]
EDITOR: [OPERATOR, EXPORT]
ADMIN: [MASTER]
admin_permissions: [CREATE, LIST, DELETE, UNDELETE, EXPORT, OPERATOR, MASTER]
因此,如果您想要用户 X:
- 要查看图库列表,那么您应该在给定的管理员上授予他 GUEST 权限
- 要查看图库列表,编辑自己的项目并创建新项目,那么您应该在给定的管理员上授予他 STAFF 权限
- 要查看图库列表,编辑每个项目并创建新项目,那么您应该在给定的管理员上授予他 OPERATOR 权限
- 做其他所有事情(即删除、更改权限)在给定的管理员上设置 MASTER 权限
还尝试扩展您的 ROLE_ADMIN 层次结构(在 app/config/security.yml):
ROLE_ADMIN: [ROLE_STAFF, ROLE_SONATA_EDITOR, ROLE_SONATA_ADMIN]
问候。