tutorial skeleton instalar framework symfony doctrine2 symfony-2.3

skeleton - symfony 4 tutorial



Oyente no llamado en Comando de consola (1)

Necesitaba persistir entidades adicionales cuando otras entidades son persistentes o actualizadas. Por lo tanto, creé una solución inspirada en esta publicación: https://stackoverflow.com/a/11054101/1526162 .

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 }

Los eventos postPersist, postUpdate y preRemove están agregando información a la cadena y, al final, kernel.response inicia la descarga y se crean las entidades adicionales necesarias. Todo funciona bien

Pero, cuando insisto dentro de un Comando de consola, no funciona. Creo que no hay evento kernel.response. ¿Hay algún otro evento útil que funcione con los Controladores y en los Comandos de la Consola?

Información adicional: estoy usando Symfony 2.3


Se han agregado eventos de consola en Symfony 2.3.

Puede encontrar una introducción rápida en esta publicación de blog .

Puede encontrar los nombres de eventos de la consola en la clase Symfony / Component / Console / ConsoleEvents .

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

Simplemente agregue la etiqueta console.terminate a su suscriptor y estará bien.

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