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');
});
Другие вопросы по тегам