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

}
    

解决方法

        您就在那儿;您需要的是标记的
event
method
参数(自Beta4版本开始):
kernel.listener.desktop_init:
    class: AirOS\\TopBarModule\\Listeners\\InitAdminDesktopListener
    tags:
        - { name: kernel.listener,event: onInitAdminDesktop,method: onInitAdminDesktop }
请注意,在即将发布的RC1版本的Symfony中,您需要使用
kernel.event_listener
而不是
kernel.listener
作为标记名(有关更多详细信息,请参见UPDATE文件)。