Fix register event listeners compiler pass

This commit is contained in:
Antonio Pauletich 2020-05-13 18:27:55 +02:00
parent b4342e3a9b
commit 646878d072
2 changed files with 10 additions and 5 deletions

View File

@ -56,12 +56,12 @@ class RegisterListenersPass implements CompilerPassInterface
return;
}
$aliases = [];
if ($container->hasParameter($this->eventAliasesParameter)) {
$aliases = $container->getParameter($this->eventAliasesParameter);
$container->getParameterBag()->remove($this->eventAliasesParameter);
} else {
$aliases = [];
}
$definition = $container->findDefinition($this->dispatcherService);
foreach ($container->findTaggedServiceIds($this->listenerTag, true) as $id => $events) {

View File

@ -213,17 +213,22 @@ class RegisterListenersPassTest extends TestCase
public function testAliasedEventListener(): void
{
$container = new ContainerBuilder();
$container->setParameter('event_dispatcher.event_aliases', [AliasedEvent::class => 'aliased_event']);
$eventAliases = [AliasedEvent::class => 'aliased_event'];
$container->setParameter('event_dispatcher.event_aliases', $eventAliases);
$container->register('foo', InvokableListenerService::class)->addTag('kernel.event_listener', ['event' => AliasedEvent::class, 'method' => 'onEvent']);
$container->register('bar', InvokableListenerService::class)->addTag('kernel.event_listener', ['event' => CustomEvent::class, 'method' => 'onEvent']);
$container->register('event_dispatcher');
$eventAliasPass = new AddEventAliasesPass([CustomEvent::class => 'custom_event']);
$customEventAlias = [CustomEvent::class => 'custom_event'];
$eventAliasPass = new AddEventAliasesPass($customEventAlias);
$eventAliasPass->process($container);
$registerListenersPass = new RegisterListenersPass();
$registerListenersPass->process($container);
$this->assertTrue($container->hasParameter('event_dispatcher.event_aliases'));
$this->assertSame(array_merge($eventAliases, $customEventAlias), $container->getParameter('event_dispatcher.event_aliases'));
$definition = $container->getDefinition('event_dispatcher');
$expectedCalls = [
[