破坏Symfony2 ACL的Doctrine 2代理类

Lor*_*ine 7 acl proxy-classes symfony doctrine-orm

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

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

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

asw*_*wyx 8

我只是回答这个问题,因为我很难找到解决方案,这是谷歌的第一个结果.

是的,这是错的,这是symfony2的一个已知错误.

Jonathan Ingram解决了这个问题,并在不久前写了一篇关于它的帖子:http: //jonathaningram.com.au/2012/01/13/overriding-the-objectidentityretrievalstrategy-to-check-if-a-domain-object-is -a-学说代理/

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

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