2013-08-25 13 views
8

Chciałbym otrzymać listę wszystkich słuchaczy zarejestrowanych na mojej aplikacji, a także ich priorytet. Ta lista powinna zawierać moich własnych słuchaczy i odbiorców, którzy zarejestrowali rdzeń Symfony lub inne aktywne pakiety.Uzyskiwanie listy z każdym słuchaczem na Symfony2

Czy to możliwe?

Dzięki

Odpowiedz

6

Można uzyskać event dispatcher z pojemnika i spojrzeć na wydarzenia z getListeners funkcji. Przykład kontroler

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

Opis

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

Bądź ostrożny, doktryna ma własne dyspozytora zdarzeń.

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

I okazało się, że dość trudno uzyskać informacje chciałem z tablicy, która ' getListeners' zwrócony (sf 2.3). W końcu napisałem, żeby przeanalizować: '' $ dispatcher = $ this-> get ('event_dispatcher'); foreach ($ dispatcher-> getListeners() jako $ listeners) {foreach ($ listeners jako $ listener); {foreach (detektor jako szczegóły $) {if (gettype ($ details) == 'string') {echo "($ details)"; echo "
"; } else {echo get_class ($ details); }}}} '' – Sam

5

Jeśli nie chcesz napisać kod, aby wyświetlić go na swojej stronie możesz po prostu użyć CLI:

php app/console debug:event-dispatcher 
Powiązane problemy