我需要在每个模块中实现事件触发器,当发生特定事件时。我还需要所有其他模块必须在事件触发时做一些工作,并且要意识到这一点。ZF2共享模块事件管理器
我正在尝试创建一些可以发送触发器的通用端点,以及所有模块需要侦听的位置,但是我在确定如何实现这一点时遇到了一些问题。
任何想法?
我需要在每个模块中实现事件触发器,当发生特定事件时。我还需要所有其他模块必须在事件触发时做一些工作,并且要意识到这一点。ZF2共享模块事件管理器
我正在尝试创建一些可以发送触发器的通用端点,以及所有模块需要侦听的位置,但是我在确定如何实现这一点时遇到了一些问题。
任何想法?
基于对@ Andrew的回答的评论,只要您的控制器扩展了AbstractActionController
(它最有可能),它已经可以识别EventManager,所以您可以继续并在控制器操作中触发任何您喜欢的事件通过做...
<?php
namespace Application/Controller;
// usual use statements omitted for brevity ..
class IndexController extends AbstractActionController
{
public function indexAction()
{
// trigger MyEvent
$this->getEventManager()->trigger('MyEvent', $this);
}
}
要收听其他模块的引导该事件,请执行下列操作
public function onBootstrap(EventInterface $e)
{
$app = $e->getApplication();
// get the shared events manager
$sem = $app->getEventManager()->getSharedManager();
// listen to 'MyEvent' when triggered by the IndexController
$sem->attach('Application\Controller\IndexController', 'MyEvent', function($e) {
// do something...
});
}
有一个关于这几个好文章:
http://www.mwop.net/blog/266-Using-the-ZF2-EventManager.html
http://www.eschrade.com/page/zend-framework-2-event-manager/
这很容易使你的模块听这是应用广泛的一个事件,然后执行一些任务时触发。在这两个应该有足够的信息让你开始。
如果你举一个你想要的东西的例子,我可以帮助一个你如何去做的例子。
,做到了。 :) – MGP 2013-03-06 10:52:03