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и ТУЗ также удаляются.Вы бы сделали это, позвонив по номеру $acl_provier->deleteAcl($object_identity)