2012-10-06 3 views
2

이 코드가 있지만 데이터베이스에 $modificacion 개체를 삽입하는 데 문제가 있습니다. config.yml에서preupdate 이벤트 doctrine

class ListenerCrud{ 

    protected $container; 

    public function __construct(ContainerInterface $container) 
    { 
     $this->container = $container; 
    } 

    public function preUpdate(PreUpdateEventArgs $eventArgs){ 

     if ($eventArgs->getEntity() instanceof Usuario) { 

      $em = $eventArgs->getEntityManager(); 
      $modificacion = new Modificacion(); 
      $modificacion->setFechamod(new \DateTime('now')); 
      $modificacion->setEntidad('Usuario'); 
      $modificacion->setTipo('uupdate'); 
      $securityContext = $this->container->get('security.context'); 
      $modificacion->setEmpleado($securityContext->getToken()->getUser()); 
      $modificacion->setInfo('hi'); 
      $em->persist($modificacion); 
      $classMetadata = $em->getClassMetadata(get_class($modificacion)); 
      $em->getUnitOfWork()->computeChangeSet($classMetadata, $modificacion); 
     } 
    } 
} 

, 내가 가진 :

listenercrud: 
    class: mio\mioBundle\ListenerCrud 
    arguments: [@service_container] 
    tags: 
     - { name: doctrine.event_listener, event: PreUpdate} 

답변

1

이벤트 이름, 당신의 YAML 파일에서 "preUpdate"가 아닌 "PreUpdate"이어야합니다.

listenercrud: 
    class: mio\mioBundle\ListenerCrud 
    arguments: [@service_container] 
    tags: 
     - { name: doctrine.event_listener, event: preUpdate } 
관련 문제