РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
⊗ppinSpErHt 82 of 112 menu
◀ ▶

Ошибка HTTP в Inertia

Давайте рассмотрим ситуацию, когда обработчик исключений уже настроен через метод handleExceptionsUsing, но команде удобнее держать весь код ответов в одном месте рядом с другими исключениями Laravel. Тот же сценарий можно описать вручную.

Под капотом Inertia сам регистрирует колбэк respond в настройках исключений. Вы можете сделать это напрямую: при кодах 403, 404, 500 и 503 вне локальной среды вернуть метод render с компонентом ErrorPage, преобразовать ответ через toResponse и сохранить статус методом setStatusCode. Компонент ErrorPage с пропсом status может совпадать с тем, что уже лежит в проекте.

Давайте откроем настройки исключений и добавим ветку для Inertia:

<?php use Illuminate\Foundation\Application; use Illuminate\Foundation\Configuration\Exceptions; use Illuminate\Http\Request; use Inertia\Inertia; use Symfony\Component\HttpFoundation\Response; use Throwable; return Application::configure(basePath: dirname(__DIR__)) ->withExceptions(function (Exceptions $exceptions) { $exceptions->respond( function ( Response $response, Throwable $exception, Request $request ) { if ( ! app()->environment(['local', 'testing']) && in_array($response->getStatusCode(), [500, 503, 404, 403]) ) { return Inertia::render('ErrorPage', [ 'status' => $response->getStatusCode(), ]) ->toResponse($request) ->setStatusCode($response->getStatusCode()); } return $response; } ); }) ->create();

Настройте для проекта OfficeHub ручной ответ с компонентом HubErrorPage при коде 500 на боевом сервере, не меняя локальную отладку.

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить