2012-07-25 16 views

risposta

7

È necessario un sottoscrittore di eventi anziché un listener di eventi.

È necessario modificare il numero di servizio su doctrine.event_subscriber e la classe deve implementare Doctrine\Common\EventSubscriber. È necessario definire un valore getSubscribedEvents per soddisfare EventSubscriber che restituisce una serie di eventi a cui si desidera effettuare la sottoscrizione.

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

Ho provato questo in services.yml e di nuovo lo stesso errore '{nome: octrine.event_subscriber, eventi: prePersist, PreUpdate } ' – user825904

+1

* d * octrine (typo?), E non specificare gli eventi nella configurazione. 'getSubscribedEvents' fa quello. Inoltre, qual è l'errore? –

+1

grazie per quello ho provato questo e ha funzionato '{{name: doctrine.event_subscriber, connection: default}}'. Inoltre posso aggiungere altri eventi nella serie di eventi sottoscritti come PostFlush e altro. o ci vogliono solo due – user825904

16

Penso che si possa fare in questo modo:

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

Sì, puoi farlo così. Sembra molto semplice e diretto. – cezar

Problemi correlati