2013-08-25 5 views
8

Ich möchte eine Liste mit allen Zuhörern erhalten, die in meiner Anwendung registriert sind, sowie deren Priorität. Diese Liste sollte meine eigenen Listener und die Listener enthalten, die auch Symfony Core oder andere aktivierte Bundles registriert haben.Abrufen einer Liste mit allen Zuhörern auf Symfony2

Ist das möglich?

Dank

Antwort

6

Sie können event dispatcher aus dem Behälter erhalten und einen Blick auf Ereignisse mit getListeners Funktion übernehmen. Beispiel in der Steuerung

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

Beschreibung

/** 
* 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); 

Seien Sie vorsichtig, Lehre hat eigenen Event-Dispatcher.

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

Ich fand es ziemlich schwer, die Informationen zu bekommen, die ich von dem Array wollte die ' getListeners' zurückgegeben (SF 2.3). Ich habe am Ende geschrieben, um es zu analysieren: $ $ dispatcher = $ this-> get ('event_dispatcher'); foreach ($ dispatcher-> getListeners() als $ listeners) {foreach ($ listeners als $ listener); {foreach (Listener als $ Details) {if (gettype ($ details) == 'string') {echo "($ details)"; Echo '
'; } else {echo get_class ($ details); }}}} '' – Sam

5

Wenn Sie nicht wollen, Code zu schreiben, es einfach auf Ihrer Webseite angezeigt werden können CLI:

php app/console debug:event-dispatcher 
Verwandte Themen