【发布时间】:2016-01-21 12:02:15
【问题描述】:
我有一个 ExampleListener 类,看起来像:
<?php
namespace AppBundle\EventListener;
class ExampleListener
{
public function helloWorld()
{
echo "Hello World!";
}
}
这是我的 services.yml
services:
my.event:
class: AppBundle\EventListener\ExampleListener
tags:
- { name: kernel.event_listener, event: my.event, method: helloWorld }
然后我试图从控制器发送事件。
$dispatcher = new EventDispatcher();
$dispatcher->dispatch('my.event')
我没有任何错误,但从未调用 helloWorld 函数。 我的活动开始了:
php bin/console debug:event-dispatcher my.event
结果是:
#1 AppBundle\EventListener\ExampleListener::helloWorld() 0
为什么调度程序没有正确调用事件? 谢谢。
【问题讨论】:
-
你需要使用已经被容器实例化的事件调度器。试试
$this->container->get('event_dispatcher')->dispatch('my.event'); -
您可以在这里找到示例:stackoverflow.com/a/34162603/3612353