Zdarzenia preUpdate i postUpdate nie są wyzwalane w Doctrine 2
Wykonałem instrukcje z tego samouczka:http://symfony.com/doc/current/cookbook/doctrine/event_listeners_subscribers.htmli stworzyli prostego słuchacza, który nasłuchuje zdarzeń wysyłanych przez Doctrine podczas wstawiania lub aktualizowania jednostki. Zdarzenia preInsert i postInsert działają poprawnie i są wysyłane przy tworzeniu nowego obiektu. Jednak preUpdate i postUpdate nigdy nie są wywoływane w aktualizacji jednostki bez względu na wszystko. To samo dotyczy onFlush. Na marginesie, mam kontroler generowany przez konsolę, który obsługuje podstawowe operacje CRUD i pozostawił go nietknięty.
Poniżej znajdują się fragmenty kodu, które pokazują sposób, w jaki to robię.
config.yml
<code>annotation.listener: class: City\AnnotatorBundle\Listener\AnnotationListener tags: - { name: doctrine.event_listener, event: postUpdate} </code>
Implementacja detektora (pominąłem inne funkcje i dla uproszczenia pozostawiłem tylko postUpdate)
<code>class AnnotationListener { public function postUpdate(LifecycleEventArgs $args) { $entity=$args->getEntity(); echo $entity->getId(); die; } } </code>
Identyfikator encji nigdy nie jest wyświetlany, a skrypt kontynuuje wykonywanie, dopóki nie zostanie ukończony, pomimoumierać na końcu funkcji.