Symfony 2.5.6错误InvalidArgumentException:服务定义“event_dispatcher”不存在

时间:2014-10-27 17:07:56

标签: symfony

我正在尝试在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。所以我真的很困惑这一切。我想知道:

  • 为什么Alias是私有的?我是否需要将他公开或是错误的方式?
  • 为什么Symfony不会自动解释我的event_dispatcher调用?

感谢您的帮助!

1 个答案:

答案 0 :(得分:6)

使用findDefinition()代替getDefinition()findDefinition也会查找别名。