AclProvider::findAcls($oids, $sids)
实际上做了什么?对我来说,它返回一个数组(SplObjectStorage<ObjectIdentities>
)。我如何从他们那里获得ACL?
更新
我正在尝试为特定用户获取所有ACE,以便我可以删除它们。例如。删除用户时我希望我能走上正轨,就像使用正确的功能一样?
答案 0 :(得分:2)
AclProvider::findAcls()
用于批量加载ACL。它用于你有许多不同对象(最终是对象身份)的情况。
假设您有一系列类别,每个用户只能查看其中的一部分。要填充用户可以查看的类别列表,我必须检查ACL。
我首先找到所有类别,创建一个对象标识数组($oids[] = ObjectIdentity::fromDomainObject($category)
),然后调用findAcl
方法($acl_provider->findAcls($oids)
)。我现在可以为每个$this->container->get('security.context')->isGranted('VIEW', $category)
调用$category
,并且由于ACL已预加载,应用程序将不再查询数据库。
至于删除所有ACE,我认为你可以删除整个ACL,ACE也会被删除。您可以致电$acl_provier->deleteAcl($object_identity)