php - Symfony2 事件监听器作为服务

标签 php symfony

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

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

}

最佳答案

你已经完成了大部分工作;您需要的是标签的 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更多详情)。

关于php - Symfony2 事件监听器作为服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6433435/

相关文章:

php - 如何在 PHP 中生成唯一的数字 ID?

php - 交响乐2 : Save json and display value

php - Symfony 2.5 "You have requested a non-existent service "siteTest.b"

symfony - 如何防止Symfony2转义html

php - 使用 Symfony DomCrawler 获取表格行

javascript - WebView 出现问题,加载时卡住

php - 我如何从 Propel 中的派生表中进行选择?

php - 如何在数组中添加结构化数据模式

php - 如何在 laravel-dompdf 中设置景观?

php - 使用自定义验证约束检查数据库中是否存在条目