我正在尝试在Symfony 2中构建我的第一个编译器通行证。目前,我只是想在SampleBundle中从FrameWorkBundle获取核心event_dispatcher服务,但是我收到了这个错误:
error InvalidArgumentException: The service definition "event_dispatcher" does not exist.
以下是我的编译器的代码:
<?php
namespace Me\SampleBunlde\DependencyInjection\Compiler;
use Symfony\Component\DependencyInjection\Compiler;
use Symfony\Component\DependencyInjection\ContainerBuilder;
use Symfony\Component\DependencyInjection\Compiler\CompilerPassInterface;
class RegisterListenersPass implements CompilerPassInterface
{
public function process(ContainerBuilder $container)
{
$definition = $container->getDefinition('event_dispatcher');
}
}
?>
我有点惊讶,因为我一步一步地遵循一本专业的Symfony书,向我保证我会找到带有该ID的服务。
我已经做了一些关于这方面的研究,我发现只有debug.event_dispatcher服务是可用的。然后我检查了别名,发现有一个名为&#39; event_dispatcher&#39;的私人别名。指向debug.event_dispatcher。所以我真的很困惑这一切。我想知道:
感谢您的帮助!
答案 0 :(得分:6)
使用findDefinition()
代替getDefinition()
。 findDefinition
也会查找别名。