Комментарии 17
Как-то колхозно. Может, лучше вернуть кастомную вьюху?
Пользователь словил 500, хочет вернуться на страницу, предшествующую упавшей, нажав кнопку назад. Вместо предыдущей работающей страницы, пользователь опять попадает на /500
правильно я понимаю логику?
На 500-ой никто не отправляет пользователя назад. Если он нажмет в браузере назад, то да, его вернет на 500-ку. Как вариант, можно добавить обработку предыдущего линка и в шаблоне добавить кнопку "Назад" и возвращать пользователя правильно. Хорошее предложение.
А если 500 из вьюхи пришла? Меню например из базы которая упала. Или 500 на сервисах
Я тут не знаю, предполагаю, что VUE сама умеет обрабатывать ошибки. Есть ещё у Sentry SDK для JavaScript. Можно её использовать.
Я про view, про блейды.
Ну и сходу зачем редирект делать? Почему бы не сделать сразу return response()->view()? Так не будут работать x-slot?
Не понял, а при чем здесь VUE? Ведь мы говорили вроде бы про рендеринг на сервере? Да, VUE умеет. но зачем тогда вообще было затеваться со "сверстанной из blade-компонентов страницей"?
Не совсем понятно, для чего эта статья. Обработка ошибок, отображение кастомных вьюх и многое другое - всё подробно описано в разделе Error Handling официальной документации.
Я в офциально документации не нашел, как пробрасывать ошибки шаблонов Sentry, но допускаю, что не все дочитал. А вот как заставить показывать кастомный шаблон 500-ки с использованием blade-компонентов - задача для меня была нерешена уже более месяца. А здесь получилось найти такое решение.
Laravel упрощает отображение пользовательских страниц ошибок для различных кодов состояния HTTP. Например, чтобы настроить страницу ошибок для кодов состояния HTTP 404, создайте
resources/views/errors/404.blade.php
шаблон представления. Это представление будет отображаться для всех ошибок 404, сгенерированных вашим приложением. Представления в этом каталоге должны иметь имена, соответствующие коду состояния HTTP, которому они соответствуют.https://laravel.com/docs/10.x/errors#custom-http-error-pages
Цитата из официальной документации, по аналогии так же создаёшь и для 500
Все исключения обрабатываются классом
App\Exceptions\Handler
. Этот класс содержит методregister
, в котором вы можете зарегистрировать свои отчеты об исключениях и замыкания рендеринга. Отчеты об исключениях используются для регистрации исключений или отправки их во внешнюю службу, например Flare, Bugsnag или Sentry.
Вы можете использовать метод
reportable
для регистрации замыкания, которое должно быть выполнено, когда необходимо сообщить об исключении конкретного типа
Что касается view:
По умолчанию обработчик исключений Laravel будет преобразовывать исключения в HTTP-ответ за вас. Однако вы можете зарегистрировать свое замыкание для отображения исключений конкретного типа. Вы можете сделать это с помощью метода
renderable
обработчика исключений.
public function register()
{
$this->renderable(function (InvalidOrderException $e, $request) {
return response()->view('errors.invalid-order', [], 500);
});
}
Как сделасть кастомную 500-ую страницу в Laravel и пробрасывать ошибки в Sentry