Symfony SonatAdminBundle:根据字段值设置权限

Symfony SonatAdminBundle:根据字段值设置权限,symfony,acl,sonata-admin,Symfony,Acl,Sonata Admin,我有一个正在工作的SonataAdmin+FOSUser(没有SonataUserBundle)设置,启用了角色和ACL。这很好,每个用户都可以根据其角色访问不同的管理员 现在我需要更深入一点。我想根据基础实体关联的值限制对某个管理员的访问 假设我有: /** * @ORM\Entity */ class Content { /** * @var string * * @ORM\ManyToOne(targetEntity="ContentType",

我有一个正在工作的SonataAdmin+FOSUser(没有SonataUserBundle)设置,启用了角色和ACL。这很好,每个用户都可以根据其角色访问不同的管理员

现在我需要更深入一点。我想根据基础实体关联的值限制对某个管理员的访问

假设我有:

/**
 * @ORM\Entity
 */
class Content
{
    /**
     * @var string
     *
     * @ORM\ManyToOne(targetEntity="ContentType", inversedBy="contents")
     */
    private $type;
}

/**
 * @ORM\Entity
 */
class ContentType
{
    /**
     * @var string
     *
     * @ORM\Column(name="name", type="string", length=255)
     */
    private $name;
}
我希望:

  • 角色为XXXXX的用户:可以访问内容类型名称为“XXXXX”的所有内容
  • 角色为_uyyyy的用户:可以访问内容类型名称为“yyyy”的所有内容
当然,这也意味着在创建新内容或过滤内容列表时,用户不应该能够选择他们没有任何权限的内容类型

我尝试过这个,但运气不好:

php app/console acl:set --role=ROLE_XXXXX MASTER MyBundle/ContentType:2