preUpdate und postUpdate-Ereignisse nicht ausgelöst, die auf der Lehre 2
Ich folgte den Anweisungen von diesem tutorial: http://symfony.com/doc/current/cookbook/doctrine/event_listeners_subscribers.html, und haben einen einfachen listener Listener für Ereignisse ausgelöst werden, die Lehre auf einfügen oder aktualisieren einer Entität. Die preInsert und die postInsert events funktionieren und versendet werden, die auf die Schaffung einer neuen Entität. Allerdings preUpdate und postUpdate sind nie auf das update von der Person, egal was. Das gleiche gilt für onFlush. Als seitliche Anmerkung, ich habe eine Konsole generiert controller, unterstützt die basic CRUD-Operationen, und verließ Sie unberührt.
Unten sind einige code-snippets zu zeigen, wie ich bin, dies zu tun.
config.yml
annotation.listener:
class: City\AnnotatorBundle\Listener\AnnotationListener
tags:
- { name: doctrine.event_listener, event: postUpdate}
Listener-Implementierung (die ich ausgelassen habe, die anderen Funktionen und Links nur das postUpdate für Einfachheit Zwecke)
class AnnotationListener
{
public function postUpdate(LifecycleEventArgs $args)
{
$entity=$args->getEntity();
echo $entity->getId();
die;
}
}
Entity-id wird nie angezeigt, und das script setzt die Ausführung bis zum Abschluss, trotz der sterben am Ende der Funktion.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Haben Sie vergessen, hinzuzufügen
@HasLifecycleCallbacks
annotaion? Könnten Sie@PreUpdate
annotation und überspringen Sie die service-definition zusammen.Meiner Meinung nach diese Art der Befestigung Ereignisse viel einfacher, da Sie nicht haben, um neue Dienste definieren und Zuhörer explizit. Auch Sie haben direkten Zugriff auf die Daten aktualisiert, wie diese Methode ist, Standorte, die innerhalb Ihrer Organisation.
Nun, Nachteil ist, dass man mix-Logik mit dem Modell, und das ist etwas, das vermieden werden sollte, wenn möglich...
Lesen Sie mehr über Lifecycle-callbacks hier:
http://symfony.com/doc/master/cookbook/doctrine/file_uploads.html#using-lifecycle-callbacks