[FrameworkBundle] made sure that the debug event dispatcher is used everywhere
This commit is contained in:
parent
6ec2cbaa6c
commit
f65a526e7d
|
@ -18,11 +18,11 @@ class RegisterKernelListenersPass implements CompilerPassInterface
|
||||||
{
|
{
|
||||||
public function process(ContainerBuilder $container)
|
public function process(ContainerBuilder $container)
|
||||||
{
|
{
|
||||||
if (!$container->hasDefinition('event_dispatcher')) {
|
if (!$container->hasDefinition('event_dispatcher') && !$container->hasAlias('event_dispatcher')) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
$definition = $container->getDefinition('event_dispatcher');
|
$definition = $container->findDefinition('event_dispatcher');
|
||||||
|
|
||||||
foreach ($container->findTaggedServiceIds('kernel.event_listener') as $id => $events) {
|
foreach ($container->findTaggedServiceIds('kernel.event_listener') as $id => $events) {
|
||||||
foreach ($events as $event) {
|
foreach ($events as $event) {
|
||||||
|
|
|
@ -51,12 +51,14 @@ class FrameworkExtension extends Extension
|
||||||
if ($container->getParameter('kernel.debug')) {
|
if ($container->getParameter('kernel.debug')) {
|
||||||
$loader->load('debug.xml');
|
$loader->load('debug.xml');
|
||||||
|
|
||||||
// only HttpKernel needs the debug event dispatcher
|
|
||||||
$definition = $container->findDefinition('http_kernel');
|
$definition = $container->findDefinition('http_kernel');
|
||||||
$arguments = $definition->getArguments();
|
$definition->replaceArgument(2, new Reference('debug.controller_resolver'));
|
||||||
$arguments[0] = new Reference('debug.event_dispatcher');
|
|
||||||
$arguments[2] = new Reference('debug.controller_resolver');
|
// replace the regular event_dispatcher service with the debug one
|
||||||
$definition->setArguments($arguments);
|
$definition = $container->findDefinition('event_dispatcher');
|
||||||
|
$definition->setPublic(false);
|
||||||
|
$container->setDefinition('debug.event_dispatcher.parent', $definition);
|
||||||
|
$container->setAlias('event_dispatcher', 'debug.event_dispatcher');
|
||||||
}
|
}
|
||||||
|
|
||||||
$configuration = $this->getConfiguration($configs, $container);
|
$configuration = $this->getConfiguration($configs, $container);
|
||||||
|
|
|
@ -17,7 +17,7 @@
|
||||||
|
|
||||||
<service id="debug.event_dispatcher" class="%debug.event_dispatcher.class%">
|
<service id="debug.event_dispatcher" class="%debug.event_dispatcher.class%">
|
||||||
<tag name="monolog.logger" channel="event" />
|
<tag name="monolog.logger" channel="event" />
|
||||||
<argument type="service" id="event_dispatcher" />
|
<argument type="service" id="debug.event_dispatcher.parent" />
|
||||||
<argument type="service" id="debug.stopwatch" />
|
<argument type="service" id="debug.stopwatch" />
|
||||||
<argument type="service" id="logger" on-invalid="null" />
|
<argument type="service" id="logger" on-invalid="null" />
|
||||||
<call method="setProfiler"><argument type="service" id="profiler" on-invalid="null" /></call>
|
<call method="setProfiler"><argument type="service" id="profiler" on-invalid="null" /></call>
|
||||||
|
|
|
@ -78,6 +78,10 @@ class RegisterKernelListenersPassTest extends \PHPUnit_Framework_TestCase
|
||||||
->method('getDefinition')
|
->method('getDefinition')
|
||||||
->will($this->returnValue($definition));
|
->will($this->returnValue($definition));
|
||||||
|
|
||||||
|
$builder->expects($this->atLeastOnce())
|
||||||
|
->method('findDefinition')
|
||||||
|
->will($this->returnValue($definition));
|
||||||
|
|
||||||
$registerListenersPass = new RegisterKernelListenersPass();
|
$registerListenersPass = new RegisterKernelListenersPass();
|
||||||
$registerListenersPass->process($builder);
|
$registerListenersPass->process($builder);
|
||||||
}
|
}
|
||||||
|
|
Reference in New Issue