我正在使用klein.php路由器,它非常强大,但现在我想处理异常, 所以从我正在使用这个功能的文件中
$klein->onHttpError(function ($code, $router,$matched,$method_matched,$http_exception) {
switch ($code) {
case 404:
$router->response()->body(
'404 Page'
);
break;
case 405:
$router->response()->body(
'You can\'t do that!'
);
break;
default:
$router->response()->body(
'Oh no, a bad error happened that caused a '. $code
);
}
});
但即使没有异常,此函数也会在每个页面的末尾呈现并打印404 page
。
难道我做错了什么?我试过检查$matched
,但没有运气。
我想在错误处理中使用$service->render()
,我该怎么做?因为特定的onHttpError
函数无法访问服务。
答案 0 :(得分:0)
经过实验,我发现它是由于skipRemaining()
功能而发生的。然后我又开始探讨这些问题。问题#285提供了解决方案。
但我仍然没有找到使用onHttpError()
对象调用在$service
函数中呈现页面。
编辑:
要访问$service
中的onHttpError()
对象,我们必须再次声明它。所以代码将是
$klein->onHttpError(function ($code, $router) {
$service = $router->service();
$service->render('your-page-url.php');
});