onHttpError в klein.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
функция.
1 ответ
После экспериментов выясняю, что это происходит из-за skipRemaining()
функция. Затем я снова начал изучать проблемы. Проблема № 285 предоставила решение.
Но все равно я не нашел, чтобы сделать страницу в onHttpError()
использовать функцию $service
вызов объекта.
Редактировать:
Чтобы получить доступ $service
объект в onHttpError()
Мы должны объявить это снова. Так что код будет
$klein->onHttpError(function ($code, $router) {
$service = $router->service();
$service->render('your-page-url.php');
});