Symfony2事件监听器作为服务

时间:2011-06-22 00:07:08

标签: php symfony

将事件监听器定义为服务时,如何定义哪个函数与哪个事件一起使用?

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!');
    }

}

1 个答案:

答案 0 :(得分: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)。