gpt4 book ai didi

events - ZF2 共享模块事件管理器

转载 作者:行者123 更新时间:2023-12-03 18:26:36 24 4
gpt4 key购买 nike

当特定事件发生时,我需要在我的每个模块中实现一个事件触发器。我还需要在触发该事件时必须执行某些工作的所有其他模块注意它。

我正在尝试创建一些可以发送触发器的通用端点,以及所有模块都需要监听的地方,但是我在弄清楚如何实现这一点时遇到了一些麻烦。

有任何想法吗?

最佳答案

根据对@Andrew 回答的评论,只要您的 Controller 扩展 AbstractActionController (它很可能会这样做)它已经知道 EventManager,因此您只需执行以下操作即可继续并在 Controller 操作中触发您喜欢的任何事件...

<?php
namespace Application/Controller;

// usual use statements omitted for brevity ..

class IndexController extends AbstractActionController
{
public function indexAction()
{
// trigger MyEvent
$this->getEventManager()->trigger('MyEvent', $this);
}

}

要在其他模块的 Bootstrap 中收听该事件,请执行以下操作
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...
});
}

关于events - ZF2 共享模块事件管理器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15227693/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com