Doctrine 2 - фильтрует загруженные объекты на основе ACL - PullRequest
2 голосов
/ 18 января 2012

Слушатели событий в Doctrine 2 очень полезны. Я могу использовать их, чтобы эффективно использовать ACL для создания, обновления и удаления объектов. Однако я не могу найти способ сделать это для загрузки сущностей.

Событие postLoad срабатывает после загрузки объекта, и я могу проверить ACL в прослушивателе событий, но что мне делать? Я хотел бы молча удалить объекты с ACL deny из результирующего набора, чтобы возвращались только те объекты, которые пользователь имеет разрешение на просмотр.

Внутри слушателя я пробовал $entity = null и unset($entity), но ни один из них не работает, потому что UOW все еще содержит ссылку. Я могу использовать $entitymanager->detatch($entity), но это только удаляет его из менеджера сущностей, а не уничтожает сущность.

Итак, есть ли способ сделать то, что я пытаюсь достичь? Возможно, есть другой путь?

1 Ответ

3 голосов
/ 30 мая 2012

Способ сделать это с помощью доктринальных фильтров.В сущности должно быть поле, которое вы можете отфильтровать, и тогда вы уходите.Нет необходимости иметь прослушиватель событий postLoad.См. http://docs.doctrine -project.org / ru / latest / reference / filters.html

...