Symfony Oneup/AclBundle的DoctrineSubscriber中的条令依赖项更改导致错误
我正在使用Oneup\AclBundle,在上次更新后,我无法再保存任何实体 当我尝试将实体保存到数据库时:Symfony Oneup/AclBundle的DoctrineSubscriber中的条令依赖项更改导致错误,symfony,doctrine,bundle,symfony-2.3,Symfony,Doctrine,Bundle,Symfony 2.3,我正在使用Oneup\AclBundle,在上次更新后,我无法再保存任何实体 当我尝试将实体保存到数据库时: $em = $this->getDoctrine()->getManager(); $em->persist($entity); $em->flush(); 。。。我得到这个错误: ContextErrorException:可捕获的致命错误:传递给Oneup\AclBundle\EventListener\DoctrineSubscriber::postPer
$em = $this->getDoctrine()->getManager();
$em->persist($entity);
$em->flush();
。。。我得到这个错误:
ContextErrorException:可捕获的致命错误:传递给Oneup\AclBundle\EventListener\DoctrineSubscriber::postPersist()的参数1必须是Doctrine\Common\Persistence\Event\LifecycleEventArgs的实例,给定的Doctrine\ORM\Event\LifecycleEventArgs的实例,在第61行的vendor/symfony/symfony/src/symfony/Bridge/Doctrine/ContainerAwareEventManager.php中调用,并在vendor/oneup/acl bundle/oneup/AclBundle/EventListener/doctrinessubscriber.php第18行中定义
我发现Oneup/AclBundle有以下更改:
基于此,我尝试更改文件vendor/oneup/acl bundle/oneup/AclBundle/EventListener/DoctrineSubscriber.php:
use Doctrine\Common\Persistence\Event\LifecycleEventArgs;
...
class DoctrineSubscriber implements EventSubscriber
{
...
public function postPersist(LifecycleEventArgs $args)
{
...
$entity = $args->getObject();
$object = new \ReflectionClass($entity);
...
}
}
。。。致:
use Doctrine\ORM\Event\LifecycleEventArgs;
...
class DoctrineSubscriber implements EventSubscriber
{
...
public function postPersist(LifecycleEventArgs $args)
{
...
$entity = method_exists($args, 'getObject')? $args->getObject(): $args->getEntity(); // the called method sometimes changes
$object = new \ReflectionClass($entity);
...
}
}
。。。就像这样,它是有效的
如何使用此更新使事情恢复正常工作?
我想我必须让一个普通的条令事件类被解雇,而不是ORM条令事件类
更新时,此捆绑包的日志为:
- 更新oneup/acl包开发主机(b3c6ddb=>fc3fdbc) 签出FC3FDBCF3547F0E0520EBB7F7E86E3A05779D4
引发上述错误的原因是继承范围太窄和定义的编写器依赖关系太宽
作为记录:在中报告了该错误,并在提交时修复了该错误。如果遇到此错误,请将捆绑包更新为新版本,并将
doctrine/orm
更新为2.4.2
,如中所述。bundle dev here。您运行的是哪一版本的条令/通用?看来我把约束搞错了。根据事件对象从LifecycleEventArgs
继承到2.4版,至少可以说这不是最佳版本。我使用的是v2.4.1Hi@devsheeep版本,您需要进一步的信息吗?我还是被困在这件事上。。。虽然我暂时改变了我说的文件,所以我可以继续。也许我会回到以前的版本…嘿嘿。抱歉耽搁了,我这几天很忙。你能给我制造一个问题吗,我会试着找些时间来解决这个问题!事实上,我的错误似乎与此相同,我将在这里进行评论。