klein.php 中的 onHttpError 每次都执行
onHttpError in klein.php executes every time
我用的是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
功能。
经过试验,我发现它是由于 skipRemaining()
函数而发生的。然后我又开始探索这些问题。问题 #285 提供了解决方案。
但我仍然没有找到使用 $service
对象调用在 onHttpError()
函数中呈现页面的方法。
编辑:
要访问 onHttpError()
中的 $service
对象,我们必须再次声明它。所以代码将是
$klein->onHttpError(function ($code, $router) {
$service = $router->service();
$service->render('your-page-url.php');
});
我用的是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
功能。
经过试验,我发现它是由于 skipRemaining()
函数而发生的。然后我又开始探索这些问题。问题 #285 提供了解决方案。
但我仍然没有找到使用 $service
对象调用在 onHttpError()
函数中呈现页面的方法。
编辑:
要访问 onHttpError()
中的 $service
对象,我们必须再次声明它。所以代码将是
$klein->onHttpError(function ($code, $router) {
$service = $router->service();
$service->render('your-page-url.php');
});