0

我有以下问题。目前我在一个项目中工作,我应该开发一个新模块。问题是,主模块只使用 onBootstrap 函数来验证请求(每个),如果它不在主模块的路由上,它会返回一个未找到的 404 错误页面。

现在我在我的新模块上的所有新路由都不起作用,因为 onBootstrap() 刚刚启动。如果路由刚刚命中并且每个模块都找不到获取 404 错误页面的路由,有没有办法检查主模块?

我对这个框架很陌生 D=。

例子:

主模块.php


class Module
{

...

onBootstrap() 
{
$request = ...->getRequest();
if($request->isNotValid()) {
return new 404Response();
}
}

...

}


class SideModule
{

...

// Never triggered
public function indexAction() 
{
print("Hello World");
}

...

}

4

1 回答 1

1

您应该在代码后面依赖 404 解析器,而不是在第一个模块的引导期间。我建议摆脱在 MainModuleonBootstrap()方法中返回 404 响应的代码,而是依赖于Laminas\Mvc\View\Http\RouteNotFoundStrategy在应用程序引导期间自动注入的代码(请参阅Laminas\Mvc\Application::bootstrap()附加 defaultListeners 的部分。ViewManager 是 defaultListeners 之一,ViewManager 代表它附加HttpRouteNotFoundStrategyLaminas\Mvc\View\Http\ViewManager::bootstrap()方法中)。

RouteNotFoundStrategy 不仅会为你的MvcEvent->getResponse()对象设置一个 404 状态码,还会呈现一个未找到的页面,你可以自定义任何你喜欢的方式。有关详细信息,请参阅https://docs.laminas.dev/laminas-mvc/services/

于 2020-08-11T05:42:35.363 回答