diff --git a/src/Symfony/Bundle/WebProfilerBundle/Resources/views/Collector/events.html.twig b/src/Symfony/Bundle/WebProfilerBundle/Resources/views/Collector/events.html.twig index 6072ff69f2..0607aa8a3b 100644 --- a/src/Symfony/Bundle/WebProfilerBundle/Resources/views/Collector/events.html.twig +++ b/src/Symfony/Bundle/WebProfilerBundle/Resources/views/Collector/events.html.twig @@ -36,9 +36,9 @@ {% endfor %} - {% if collector.notcalledlisteners %} -

Not Called Listeners

+

Not Called Listeners

+ {% if collector.notcalledlisteners %} @@ -52,6 +52,17 @@ {% endfor %}
Event name
+ {% else %} +

+ No uncalled listeners. +

+

+ + All listeners were called for this request or an error occurred + when trying to collect uncalled listeners (in which case check the + logs to get more information). + +

{% endif %} {% endblock %} diff --git a/src/Symfony/Component/HttpKernel/Debug/TraceableEventDispatcher.php b/src/Symfony/Component/HttpKernel/Debug/TraceableEventDispatcher.php index de06ce2ae1..4cdd9291bc 100644 --- a/src/Symfony/Component/HttpKernel/Debug/TraceableEventDispatcher.php +++ b/src/Symfony/Component/HttpKernel/Debug/TraceableEventDispatcher.php @@ -160,9 +160,19 @@ class TraceableEventDispatcher implements EventDispatcherInterface, TraceableEve */ public function getNotCalledListeners() { - $notCalled = array(); + try { + $allListeners = $this->getListeners(); + } catch (\Exception $e) { + if (null !== $this->logger) { + $this->logger->info(sprintf('An exception was thrown while getting the uncalled listeners (%s)', $e->getMessage()), array('exception' => $e)); + } - foreach ($this->getListeners() as $name => $listeners) { + // unable to retrieve the uncalled listeners + return array(); + } + + $notCalled = array(); + foreach ($allListeners as $name => $listeners) { foreach ($listeners as $listener) { $info = $this->getListenerInfo($listener, null, $name); if (!isset($this->called[$name.'.'.$info['pretty']])) {