【发布时间】:2020-06-22 09:08:26
【问题描述】:
我需要在 zf3 应用程序的 Module.php onBootstrap 方法中获取已调度请求的模块名称。使用以前的版本(在 Zend 命名空间下),我可以通过使用共享事件管理器来做到这一点,如下所述。
public function onBootstrap(MvcEvent $e)
{
$app = $e->getApplication();
$eventManager = $app->getEventManager();
$sharedEventManager = $eventManager->getSharedManager();
$sharedEventManager->attach(AbstractActionController::class, MvcEvent::EVENT_DISPATCH, function($e) {
$controller = $e->getTarget();
$controllerClass = get_class($controller);
$moduleName = strtolower(substr($controllerClass, 0, strpos($controllerClass, '\\')));
// rest of code
// ..................
// ..................
}, 100);
}
但是对于较新版本的框架(位于 Laminas 命名空间下),它无法正常工作。它甚至不听AbstractActionController::class 目标类的MvcEvent::EVENT_DISPATCH。我可以发现他们已经根据下面的链接删除了 SharedEventManager 功能。
https://docs.laminas.dev/laminas-eventmanager/migration/removed/#sharedeventmanagerawareinterface
那么问题来了,在新版框架中,如何在onBootstrap方法中获取分派请求的模块名呢? 是否有任何解决方法来获取模块名称?
【问题讨论】:
标签: php zend-framework3 laminas