当尝试在具有由 init:acl 生成的 acl_classes 表中的现有条目的实体上运行 findAcl() 时,我得到一个 AclNotFoundException。
在调用 findAcl() 之前对有问题的对象使用 createAcl() 进行测试会显示 acl_classes 中相同类型的代理类的新记录,并且操作成功完成。
这似乎是错误的,代理应该是透明的,还是我遗漏了什么?
最佳答案
我只是在回答这个问题,因为我很难找到解决方案,这是我在 google 中的第一个结果。
是的,这是错误的,它是 symfony2 的一个已知错误。
Jonathan Ingram 解决了这个问题,并在不久前写了一篇关于它的帖子:
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
关于doctrine-orm - Doctrine 2 代理类破坏了 Symfony2 ACL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7476552/