8
我试图创建自定义事件,但无法使其工作。Symfony2自定义事件调度程序和侦听器
我做了什么:
1.I创建的事件识别类
namespace Path\ToBundle;
final class CookieEvents
{
const COOKIE_EVENT = 'cookie.event';
}
2.Created事件
namespace Path\ToBundle\EventListener;
use Path\ToBundle\Event\FilterResponseEvent;
class ResponseListener
{
public function onCookieInit(FilterResponseEvent $event)
{
//some complex logic goes here
echo('test');
}
}
3.created事件侦听器
namespace Path\ToBundle\Event;
use Symfony\Component\EventDispatcher\Event;
use Symfony\Component\HttpFoundation\Response;
class FilterResponseEvent extends Event
{
protected $response;
public function __construct(Response $response)
{
$this->response = $response;
}
public function getResponse()
{
return $this->response;
}
}
4.已结婚注册事件监听器里service.yml
kernel.listener.cookie.event:
class: Path\ToBundle\Event\ResponseListener
tags:
- { name: kernel.event_listener, event: cookie.event, method: onCookieInit }
5.Next我尝试调度控制器的动作里面事件
//includes before class
use Symfony\Component\EventDispatcher\EventDispatcher;
use Path\ToBundle\Event\FilterResponseEvent;
//inside controller action
//... $response variable is created
$dispatcher = new EventDispatcher();
$event = new FilterResponseEvent($response);
$dispatcher->dispatch(CookieEvents::COOKIE_EVENT, $event);
return $response;
//EOF controller action
我试图做到的,是要在某些行动能够火灾事件。不幸的是,这是行不通的。 事件概念对我来说是新事物,我对我在这里做的事情仍然没有信心,但它是我能够从例子中得出的结果。也许有人可以告诉我,如果我要朝正确的方向改正我?如果不是的话,一些指导更值得赞赏。
对于调度员您应该使用'$调度= $这个 - > get('event_dispatcher')',因为您将使用不同的实例。 – qooplmao
这是如何设置自定义事件的绝佳示例 – lopsided