2013-08-25 10 views

risposta

6

È possibile ottenere event dispatcher dal contenitore e dare un'occhiata agli eventi con getListeners funzione. Esempio controller

$evd = $this->get('event_dispatcher'); 
$listeners = $evd->getListeners(); 

Descrizione

/** 
* Gets the listeners of a specific event or all listeners. 
* 
* @param string $eventName The name of the event 
* 
* @return array The event listeners for the specified event, or all event listeners by event name 
*/ 
public function getListeners($eventName = null); 

Attenzione, la dottrina ha il proprio dispatcher di eventi.

/** @var $em EntityManager */ 
$em = $this->getDoctrine()->getManager(); 
$evd = $em->getEventManager(); 
$listeners = $evd->getListeners(); 
+2

ho trovato abbastanza difficile ottenere le informazioni che volevo dalla matrice che ' getListeners' restituito (sf 2.3). Ho finito per scrivere quanto segue per analizzarlo: '' $ dispatcher = $ this-> get ('event_dispatcher'); foreach ($ dispatcher-> getListeners() come $ ascoltatori) {foreach ($ listener come $ listener); {foreach (listener as $ details) {if (gettype ($ details) == 'string') {echo "($ details)"; echo '
'; } else {echo get_class ($ details); }}}} '' – Sam

5

Se non si desidera scrivere codice per visualizzare sul vostro sito web si può semplicemente utilizzare CLI:

php app/console debug:event-dispatcher