将事件监听器定义为服务时,如何定义哪个函数与哪个事件一起使用?
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!');
}
}
答案 0 :(得分:12)
你大部分都在那里;您需要的是标记的event
和method
参数(自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)。