2012-07-25 13 views

Respuesta

7

Necesita un suscriptor de evento en lugar de un oyente de evento.

Cambiaría la etiqueta de servicio a doctrine.event_subscriber, y su clase debería implementar Doctrine\Common\EventSubscriber. Necesita definir un getSubscribedEvents para satisfacer EventSubscriber que devuelve una matriz de eventos a los que desea suscribirse.

ex

<?php 

namespace Company\YourBundle\Listener; 

use Doctrine\Common\EventArgs; 
use Doctrine\Common\EventSubscriber; 

class YourListener implements EventSubscriber 
{ 
    public function getSubscribedEvents() 
    { 
     return array('prePersist', 'onFlush'); 
    } 

    public function prePersist(EventArgs $args) 
    { 

    } 

    public function onFlush(EventArgs $args) 
    { 

    } 
} 
+0

He intentado esto en services.yml y otra vez el mismo error '{nombre: octrine.event_subscriber, caso: PrePersist, PreUpdate } ' – user825904

+1

* d * octrine (typo?), Y no especifique los eventos en su configuración. 'getSubscribedEvents' hace eso. Además, ¿cuál es el error? –

+1

gracias por eso probé esto y funcionó '{{nombre: doctrine.event_subscriber, connection: default}}'. También puedo agregar más eventos en la matriz de eventos suscritos como postFlush y más. o solo toma dos – user825904

16

Creo que se puede hacer así:

my.listener: 
     class: Acme\SearchBundle\Listener\SearchIndexer 
     tags: 
      - { name: doctrine.event_listener, event: postPersist } 
      - { name: doctrine.event_listener, event: preUpdate } 
+0

Sí, puede hacerlo así. Parece muy simple y directo. – cezar

Cuestiones relacionadas