2011-06-22 73 views
3

將事件偵聽器定義爲服務時,如何定義哪個函數與哪個事件一起使用?作爲服務的Symfony2事件偵聽器

services.yml:

kernel.listener.desktop_init: 
    class: AirOS\TopBarModule\Listeners\InitAdminDesktopListener 
    tags: 
     - { name: kernel.listener } 

監聽器類:

class InitAdminDesktopListener 
{ 
    public function onInitAdminDesktop(InitAdminDesktopEvent $event) 
    { 
     $session = $event->getSession(); 
     $session->set('test2', 'im a test value!'); 
    } 

} 

回答

12

你最那裏的方式;你需要的是eventmethod參數的標籤(因爲BETA4發佈):

kernel.listener.desktop_init: 
    class: AirOS\TopBarModule\Listeners\InitAdminDesktopListener 
    tags: 
     - { name: kernel.listener, event: onInitAdminDesktop, method: onInitAdminDesktop } 

注意,在Symfony的即將RC1發佈,你需要使用kernel.event_listener而不是kernel.listener的標籤名稱(見更多詳情請參閱UPDATE file)。

+1

THANKS SOOOO很多!!!!! – flyboarder

+0

我必須使用kernel.listener還是可以使用類似於:blah.listener.whatEvent? –