2014-10-27 71 views
0

我試圖在Symfony 2中構建我的第一個Compiler Pass。現在,我只是試圖從FrameWorkBundle中獲取核心event_dispatcher服務一個SampleBundle,但我得到這個錯誤:Symfony 2.5.6錯誤InvalidArgumentException:服務定義「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'); 
    } 
} 
?> 

我有點驚訝,因爲我下面一步步professionnal Symfony的書誰向我保證我會用這個ID找到這個服務。

我已經做了一些研究,我發現只有debug.event_dispatcher服務是可用的。然後我檢查別名,看到有一個名爲'event_dispatcher'的專用別名指向debug.event_dispatcher。所以我真的很困惑。我想知道:

  • 爲什麼Alias是私人的?我是否需要將他設置爲公開或者是否是錯誤的方式?
  • 爲什麼Symfony不會自動解釋我的event_dispatcher調用?

謝謝你的幫忙!

回答

6

使用findDefinition()而不是getDefinition()findDefinition也尋找別名。

+0

感謝您的提示! – Aphax 2014-11-02 22:55:42

相關問題