破坏Symfony2 ACL的Doctrine 2代理类

时间:2011-09-19 19:56:21

标签: doctrine-orm symfony acl proxy-classes

当尝试在init:acl生成的acl_classes表中的现有条目的实体上运行findAcl()时,我得到一个AclNotFoundException。

在调用findAcl()之前使用createAcl()对相关对象进行测试,在acl_classes中显示相同类型的代理类的新记录,并且操作成功完成。

这似乎是错误的,代理应该透明,或者我错过了什么?

1 个答案:

答案 0 :(得分:8)

我只是在回答这个问题,因为我很难找到解决方案,这是google为我提供的第一个结果。

是的,这是错误的,这是symfony2的已知错误。

乔纳森·英格拉姆解决了这个问题,并在不久前写了一篇关于它的帖子: http://jonathaningram.com.au/2012/01/13/overriding-the-objectidentityretrievalstrategy-to-check-if-a-domain-object-is-a-doctrine-proxy/

他创建了自己的对象标识检索策略来覆盖默认值,并将其注册在services.xml中(参见上面的帖子)。实际上这是一个非常简单明了的解决方案,我有点惭愧,我自己没有想到:)

在symfony2.1中,它不再是问题,请参阅:https://github.com/symfony/symfony/pull/3826