Я следовал инструкциям из это руководство:http://symfony.com/doc/current/cookbook/doctrine/event_listeners_subscribers.htmlи создали простой слушатель, который прослушивает события, отправляемые Doctrine при вставке или обновлении объекта. События preInsert и postInsert работают нормально и отправляются при создании нового объекта. Однако preUpdate и postUpdate никогда не вызываются при обновлении объекта, несмотря ни на что. То же самое касается onFlush. В качестве примечания: у меня есть сгенерированный консолью контроллер, который поддерживает основные операции CRUD, и я оставил его нетронутым.
Ниже приведены фрагменты кода, демонстрирующие, как я это делаю.
config.yml
annotation.listener:
class: City\AnnotatorBundle\Listener\AnnotationListener
tags:
- { name: doctrine.event_listener, event: postUpdate}
Реализация слушателя (Я опустил другие функции и оставил только postUpdate для простоты)
class AnnotationListener
{
public function postUpdate(LifecycleEventArgs $args)
{
$entity=$args->getEntity();
echo $entity->getId();
die;
}
}
Идентификатор сущности никогда не отображается, и скрипт продолжает свое выполнение до завершения, несмотря кубик в конце функции.