我需要在 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 命名空间下),它无法正常工作。它甚至没有听目标类MvcEvent::EVENT_DISPATCH
的。AbstractActionController::class
我可以发现他们已经根据下面的链接删除了 SharedEventManager 功能。
https://docs.laminas.dev/laminas-eventmanager/migration/removed/#sharedeventmanagerawareinterface
那么问题来了,如何在新版框架的 onBootstrap 方法中获取分派请求的模块名呢?是否有任何解决方法来获取模块名称?