Ho seguito le istruzioni di questo tutorial: http://symfony.com/doc/current/cookbook/doctrine/event_listeners_subscribers.html e ho creato un semplice listener, che ascolta gli eventi inviati da Doctrine su inserimento o aggiornamento di un'entità. Gli eventi preInsert e postInsert funzionano correttamente e vengono inviati alla creazione di una nuova entità. Tuttavia, preUpdate e postUpdate non vengono mai richiamati nell'aggiornamento dell'entità, a prescindere da cosa. Lo stesso vale per onFlush. Come nota a margine, ho un controller generato da console che supporta le operazioni CRUD di base e l'ho lasciato intatto.eventi preUpdate e postUpdate non attivati su Doctrine 2
Di seguito sono riportati alcuni snippet di codice per dimostrare il modo in cui sto facendo questo.
config.yml
annotation.listener:
class: City\AnnotatorBundle\Listener\AnnotationListener
tags:
- { name: doctrine.event_listener, event: postUpdate}
Listener implementazione (ho omesso le altre funzioni e ha lasciato solo il postUpdate per scopi di semplicità)
class AnnotationListener
{
public function postUpdate(LifecycleEventArgs $args)
{
$entity=$args->getEntity();
echo $entity->getId();
die;
}
}
L'ID entità non viene mai visualizzato, e lo script continua la sua esecuzione fino a quando non è completa, nonostante lo die alla fine della funzione.
vero ... Tuttavia , Devo usare altre entità e il gestore dell'entità stessa, e possibilmente altri servizi, quindi non sarebbe una buona idea. Ad ogni modo, sembra che il problema sia risolto ora. Ho aggiornato all'ultima versione di Symfony, ho svuotato la cache e tutto funziona. – tomor
Ah sì, se stai usando altri servizi/entità ha senso non andare in questo modo :) –