Php ZF2第二轮自举
我如何才能订阅事件,以便在我的一个模块中进行第二轮引导,确保所有模块都已调用了它们的Php ZF2第二轮自举,php,zend-framework2,Php,Zend Framework2,我如何才能订阅事件,以便在我的一个模块中进行第二轮引导,确保所有模块都已调用了它们的onBootstrap()方法 我已经尝试从模块的onBootstrap()中订阅相同的onBootstrap()事件,但优先级较低。那没用;显然,要触发的事件是在触发任何事件之前确定的,因此您不能订阅当前正在触发的同一事件并期望它工作 我还想尝试订阅加载模块。在init()中发布,然后订阅EVENT\u BOOTSTRAP,但我意识到我找不到任何方法来访问$mvcEvent,反过来,$application,然
onBootstrap()
方法
我已经尝试从模块的onBootstrap()
中订阅相同的onBootstrap()
事件,但优先级较低。那没用;显然,要触发的事件是在触发任何事件之前确定的,因此您不能订阅当前正在触发的同一事件并期望它工作
我还想尝试订阅
加载模块。在init()
中发布,然后订阅EVENT\u BOOTSTRAP
,但我意识到我找不到任何方法来访问$mvcEvent
,反过来,$application
,然后,订阅需要在其上进行的应用程序事件管理器。前几天我不得不完全这样做
您是对的,您不能在onBootstrap
事件中附加,您需要在init
方法中附加一个侦听器,您需要使用共享管理器来侦听应用程序触发的MvcEvent
public function init(ModuleManager $modules)
{
// attach to the end of the bootstrap event
$modules->getEventManager()
->getSharedManager()
->attach('Zend\Mvc\Application', MvcEvent::EVENT_BOOTSTRAP, function ($e) {
// do something after everything else has bootstrapped
}, -1000);
}