He seguido las instrucciones de este tutorial: http://symfony.com/doc/current/cookbook/doctrine/event_listeners_subscribers.html, y he creado un escucha simple, que escucha los eventos enviados por Doctrine al insertar o actualizar una entidad. Los eventos preInsert y postInsert funcionan bien y se envían en la creación de una nueva entidad. Sin embargo, preUpdate y postUpdate nunca se invocan en la actualización de la entidad pase lo que pase. Lo mismo ocurre con onFlush. Como nota al margen, tengo un controlador generado por consola que admite las operaciones CRUD básicas, y lo he dejado intacto.eventos preUpdate y postUpdate no activados en Doctrine 2
A continuación se muestran algunos fragmentos de código para demostrar la forma en que lo estoy haciendo.
config.yml
annotation.listener:
class: City\AnnotatorBundle\Listener\AnnotationListener
tags:
- { name: doctrine.event_listener, event: postUpdate}
implementación del receptor (He omitido las otras funciones y se fue sólo el PostUpdate por simplicidad)
class AnnotationListener
{
public function postUpdate(LifecycleEventArgs $args)
{
$entity=$args->getEntity();
echo $entity->getId();
die;
}
}
El ID de entidad nunca se muestra, y el guión continúa su ejecución hasta que esté completa, a pesar del muere al final de la función.
cierto ... Sin embargo , Tengo que usar otras entidades y el propio administrador de la entidad, y posiblemente otros servicios, por lo que no sería una buena idea. De todos modos, parece que el problema se resuelve ahora. Actualicé a la última versión de Symfony, borré el caché y todo está funcionando. – tomor
Ah, sí, si está utilizando otros servicios/entidades, tiene sentido no ir por este camino :) –