Я использую Oneup \ AclBundle, и после последнего обновления я больше не могу сохранить никакой объект.Ошибка, вызванная изменениями зависимости Doctrine в DoctrineSubscriber для Oneup/AclBundle
Когда я пытаюсь сохранить объект в базу данных:
$em = $this->getDoctrine()->getManager();
$em->persist($entity);
$em->flush();
... Я получаю эту ошибку:
ContextErrorException: Catchable Fatal Error: Argument 1 passed to Oneup\AclBundle\EventListener\DoctrineSubscriber::postPersist() must be an instance of Doctrine\Common\Persistence\Event\LifecycleEventArgs, instance of Doctrine\ORM\Event\LifecycleEventArgs given, called in vendor/symfony/symfony/src/Symfony/Bridge/Doctrine/ContainerAwareEventManager.php on line 61 and defined in vendor/oneup/acl-bundle/Oneup/AclBundle/EventListener/DoctrineSubscriber.php line 18
Я нашел это изменение Oneup/AclBundle: https://github.com/danez/OneupAclBundle/commit/f3eacf040677019caad73d221a610c73cbd7dd25
Исходя из этого, я попытался изменить поставщика файлов/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);
...
}
}
... и как это работает.
Как мне заставить все работать снова с этим обновлением? Думаю, я должен как-то создать общую доктрину EventClass уволен, а не доктрину ORM EventClass.
После обновления журнала для этого расслоения был:
- Updating oneup/acl-bundle dev-master (b3c6ddb => fc3fdbc) Checking out fc3fdbcf3547f0e0520ebb7f7f7e86e3a05779d4
Bundle dev here. Какую версию учения/общей вы используете? Похоже, я ошибался. Согласно [source] (https://github.com/doctrine/doctrine2/blob/2.4/lib/Doctrine/ORM/Event/LifecycleEventArgs.php) объект события наследует от 'LifecycleEventArgs' до версии 2.4, что не оптимально, мягко говоря. – devsheeep
Я использую версию v2.4.1 – dxvargas
Привет @devsheeep, вам нужна дополнительная информация? Я все еще придерживаюсь этого ... хотя я временно меняю файл, как я сказал, чтобы продолжить. Может быть, я просто вернусь к предыдущей версии ... – dxvargas