我正在使用sonata admin bundle处理symfony2项目。我的网站上有一些可编辑的文字,比如“演示文稿”“实际上”等等......
我找到了一个解决方案,但感觉不太好。
我创建了一个Entity EditableText,我在其中映射了一个包含以下内容的键:
key => “介绍” content => “这是我的演讲”
我对我的所有EditableText都这样做。
这样做会让我看到我的sonata管理包中的EditableText列表,对于非技术人员来说,这不是“用户友好”。如果他删除了一行,网站就找不到内容...等等......
我想在奏鸣曲中有一个字段,用户可以在某处编辑每个文本,但不能修改它们的键或删除一行或其他东西。
我不介意改变我的观念。
如果您有任何提示,建议,......
谢谢,对不起我的英语;)
答案 0 :(得分:1)
如果您想保留自己的概念,可以使用基于角色的安全方法限制编辑器的访问权限。您可以按照the security section of the SonataAdminBundle documentation中的说明向编辑器授予ROLES LIST,VIEW,EDIT 。这样管理员(您)就可以为您的网站创建具有所需密钥的实体,编辑者可以查看和更新它们。
例如:当您将管理服务定义为
sonata.admin.editable_text
你必须分配角色
ROLE_SONATA_ADMIN_EDITABLE_TEXT_LIST
ROLE_SONATA_ADMIN_EDITABLE_TEXT_VIEW
ROLE_SONATA_ADMIN_EDITABLE_TEXT_EDIT
您可以使用role_hierarchy
配置的security
指令轻松地将这些角色分组为一个角色:
security:
# ...
role_hierarchy:
# group the roles for your convenience,
ROLE_SONATA_EDITOR:
- ROLE_SONATA_ADMIN_EDITABLE_TEXT_LIST
- ROLE_SONATA_ADMIN_EDITABLE_TEXT_VIEW
- ROLE_SONATA_ADMIN_EDITABLE_TEXT_EDIT