2013-11-01 11 views
5

Avevo bisogno di mantenere ulteriori entità quando altre entità sono persistenti o aggiornate. Pertanto ho creato una soluzione ispirata a questo post: https://stackoverflow.com/a/11054101/1526162.Listener non chiamato in Console Comando

config.yml:

services: 
    transaktion.chain: 
     class: Foo\BarBundle\Listener\Chain 

    transaktion.flush: 
     class: Foo\BarBundle\Listener\Flush 
     arguments: [ @doctrine.orm.entity_manager, @transaktion.chain ] 
     tags: 
      - { name: kernel.event_listener, event: kernel.response, method: onResponse, priority: 5 } 

    transaktion.listener: 
     class: Foo\BarBundle\Listener\TransaktionLogger 
     arguments: [ @transaktion.chain ] 
     tags: 
      - { name: doctrine.event_listener, event: postPersist } 
      - { name: doctrine.event_listener, event: postUpdate } 
      - { name: doctrine.event_listener, event: preRemove } 

Le informazioni PostPersist, eventi postUpdate e preremove stanno aggiungendo alla catena e alla fine, il kernel.response inizia la Scala e si creano le entités aggiuntivi necessari. Tutto funziona bene

Tuttavia, quando continuo a entrare in un comando della console, non funziona. Penso che non ci sia un evento kernel.response. C'è un altro evento utile che funziona con i controller e nei comandi della console?

Ulteriori informazioni: Sto usando Symfony 2.3

risposta

8

Eventi console sono stati aggiunti in Symfony 2.3.

Una rapida introduzione può essere trovata in this blog post.

È possibile trovare i nomi degli eventi della console nella classe Symfony\Component\Console\ConsoleEvents.

const ConsoleEvents::COMMAND = 'console.command'; 
const ConsoleEvents::TERMINATE = 'console.terminate'; 
const ConsoleEvents::EXCEPTION = 'console.exception'; 

Basta aggiungere il tag console.terminate al vostro abbonato e si dovrebbe andare bene.

tags: 
    - { name: kernel.event_listener, event: kernel.response, method: onResponse } 
    - { name: kernel.event_listener, event: console.terminate, method: onResponse } 
+0

Ho già lavorato su questo, ma non sono riuscito a trovare il nome dell'evento giusto per la voce dei tag. Btw: C'è una lista di tutti gli eventi disponibili nella documentazione? –

Problemi correlati