【发布时间】:2012-01-18 03:44:22
【问题描述】:
Doctrine 2 中的事件监听器非常有用。我可以使用它们在实体创建、更新和删除时有效地实施 ACL。但是,我找不到加载实体的方法。
加载实体后会触发 postLoad 事件,我可以在事件侦听器中检查 ACL,但是我该怎么办?我想从结果集中静默删除带有 ACL 拒绝的实体,以便只返回用户有权查看的实体。
在侦听器中,我尝试了$entity = null 和unset($entity),但它们都不起作用,因为 UOW 仍然拥有引用。我可以使用$entitymanager->detatch($entity),但这只会将其从实体管理器中删除,而不是破坏实体。
那么,有什么方法可以做我想要达到的目标吗?也许有不同的路径?
【问题讨论】:
标签: doctrine-orm acl