在Symfony中创建和发送事件

时间:2016-02-15 20:31:45

标签: events symfony

我正在学习Symfony,但我不了解Dispatch自定义活动

什么时候我必须派遣活动?在控制器里面?

我必须重复这段代码

// the order is somehow created or retrieved
$order = new Order();
// ...

// create the FilterOrderEvent and dispatch it
$event = new FilterOrderEvent($order);
$dispatcher->dispatch(StoreEvents::STORE_ORDER, $event);

AnyTime我想要一个活动吗?

In this Example发送此事件有什么好处?

1 个答案:

答案 0 :(得分:2)

您可以随时调度事件 - 在控制器,dataProvider或您有权访问EventDispatcher的任何其他位置。

symfony doc中所述:

  

Symfony EventDispatcher组件实现了Mediator模式   以简单有效的方式使所有这些事情成为可能   使您的项目真正可扩展。

使用events的好处是您的控制器类(或任何其他发送事件)与实际事件处理完全分离。您可以将其视为“火与忘”,这意味着您只是发送一个事件 - 谁将会做什么以及将要做什么不是您的业务。

在您的示例中,您只需添加订单和调度事件。当有人为您的系统编写插件时,他/她将只添加该事件的监听器并以他/她的方式处理它 - 例如发送添加订单的电子邮件或重新索引搜索引擎。请注意,您可以向同一事件添加多个事件侦听器。

详细了解Mediator模式