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