什么是AclProvider :: findAcls($ oids,$ sids)呢?

时间:2011-12-25 07:17:14

标签: symfony acl

AclProvider::findAcls($oids, $sids)实际上做了什么?对我来说,它返回一个数组(SplObjectStorage<ObjectIdentities>)。我如何从他们那里获得ACL?

更新

我正在尝试为特定用户获取所有ACE,以便我可以删除它们。例如。删除用户时我希望我能走上正轨,就像使用正确的功能一样?

1 个答案:

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

来完成此操作