如何解决绕过onBootstrap函数
我有以下问题。目前,我正在一个项目中开发一个新模块。问题在于,主模块仅使用onBootstrap函数(每个)来验证请求,如果不在主模块的路由上,则会返回一个未找到的404错误页面。
现在,我在新模块上的所有新路由都无法正常工作,因为onBootstrap()刚刚启动。有没有一种方法可以检查主模块中的路由是否刚刚命中,以及是否每个模块都找不到找到404错误页面的路由?
我对这个框架D =非常陌生。
示例:
MainModule.php
class Module
{
...
onBootstrap()
{
$request = ...->getRequest();
if($request->isNotValid()) {
return new 404Response();
}
}
...
}
class SideModule
{
...
// Never triggered
public function indexAction()
{
print("Hello World");
}
...
}
解决方法
您应该在代码的后面依赖404解析器,而不是在第一个模块引导期间。我建议摆脱在MainModule onBootstrap()
方法中返回404响应的代码,而应依赖于在应用程序引导过程中自动注入的Laminas\Mvc\View\Http\RouteNotFoundStrategy
(请参阅Laminas\Mvc\Application::bootstrap()
,这是defaultListeners所在的部分) ViewManager是defaultListener之一,并且ViewManager代表其在HttpRouteNotFoundStrategy
方法中附加Laminas\Mvc\View\Http\ViewManager::bootstrap()
。
RouteNotFoundStrategy不仅将为您的MvcEvent->getResponse()
对象设置404状态代码,还将呈现一个未找到的页面,您可以
自定义您喜欢的任何方式。有关更多信息,请参见https://docs.laminas.dev/laminas-mvc/services/。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。