0

我正在尝试实施 ACL 以将 FOSCommentBundle 上的评论限制为用户角色。我一步一步地跟着 Bundles Doc 但显示了一个错误:

“acl”的定义没有类。

那是我的 app/config/config.yml

fos_comment:
db_driver: orm
class:
    model:
        comment: BackEndBundle\Entity\Comment
        thread: BackEndBundle\Entity\Thread
        vote: BackEndBundle\Entity\Vote      

acl: true
service:
    acl:
        thread:  fos_comment.acl.thread.roles
        comment: fos_comment.acl.comment.roles
        vote:    fos_comment.acl.vote.roles
    manager:
        thread:  fos_comment.manager.thread.acl
        comment: fos_comment.manager.comment.acl
        vote:    fos_comment.manager.vote.acl

acl_roles:
    comment:
        create: IS_AUTHENTICATED_ANONYMOUSLY
        view: IS_AUTHENTICATED_ANONYMOUSLY
        edit: ROLE_ADMIN
        delete: ROLE_ADMIN
    thread:
        create: IS_AUTHENTICATED_ANONYMOUSLY
        view: IS_AUTHENTICATED_ANONYMOUSLY
        edit: ROLE_ADMIN
        delete: ROLE_ADMIN
    vote:
        create: IS_AUTHENTICATED_ANONYMOUSLY
        view: IS_AUTHENTICATED_ANONYMOUSLY
        edit: ROLE_ADMIN
        delete: ROLE_ADMIN       
assetic:
  bundles: [ "FOSCommentBundle" ]

我认为 symfony3 没有安装 ACL,所以我尝试使用命令但给了我同样的错误““acl”的定义没有类”。

那是我的 app/config/services.yml

parameters:    

services:
     acl:
      connection: default
4

1 回答 1

1

您不必将 ACL 配置添加到 app/config/services.yml。在这种情况下,包 FOSCommentBundle 有自己的服务配置文件。

只需通过 Composer 安装包并将包添加到 AppKernel.php

$bundles = [
...
new FOS\CommentBundle\FOSCommentBundle(),
...

如果您已完成上述所有操作,只需acl: connection: default从 app/config/services.yml 中删除它就可以了。您可以检查是否有可用的 FOSCommentBundle 服务bin\console debug:container fos_comment

于 2017-05-10T16:52:46.793 回答