Symfony2最佳实践可编辑文本奏鸣曲管理包

时间:2015-11-07 12:22:56

标签: php symfony sonata-admin

我正在使用sonata admin bundle处理symfony2项目。我的网站上有一些可编辑的文字,比如“演示文稿”“实际上”等等......

我找到了一个解决方案,但感觉不太好。

我创建了一个Entity EditableText,我在其中映射了一个包含以下内容的键:

key => “介绍” content => “这是我的演讲”

我对我的所有EditableText都这样做。

这样做会让我看到我的sonata管理包中的EditableText列表,对于非技术人员来说,这不是“用户友好”。如果他删除了一行,网站就找不到内容...等等......

我想在奏鸣曲中有一个字段,用户可以在某处编辑每个文本,但不能修改它们的键或删除一行或其他东西。

我不介意改变我的观念。

如果您有任何提示,建议,......

谢谢,对不起我的英语;)

1 个答案:

答案 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