Всем привет. Совсем недавно начал осваивать laravel и передо мной постал вопрос как лучше всего организовать вывод ошибок.
На данный момент попытался организовать следующим образом:
1. Немного расширил базовый Handler исключений и в методе render смотрю какой тип запроса привел к ошибке:
public function render($request, Exception $e)
{
$statusCode = $this->getStatusCode($e);
if ($request->wantsJson()) {
return response()->json(['message' => $e->getMessage()], $statusCode);
}
if (!config('app.debug')) {
return parent::render($request, $e);
}
return response()->view('errors', ['error' => $e->getMessage()], 500);
}
Если с ajax запросами все боле менее норм - отлавливаю в error текст ошибки, а затем отображаю "всплывашку" (хотя всеравно задалбывает повторять одно и тоже в каждом ajax методе и мне кажется это можно както сделать красивее)
)
.error(function(data) {
$.notify(data.message, "error");
});
, то с ошибками при загрузке страниц все не так гладко. Пытался юзать флеш сообщения, добавив в базовый шаблон блок с ошибками такого духа:
@section('flash')
@if(Session::has('flash_success'))
<div class="alertFlash alert alert-success">{!! session('flash_success') !!}</div>
@endif
@if(Session::has('flash_warning'))
<div class="alertFlash alert alert-warning">{!! session('flash_warning') !!}</div>
@endif
@if(Session::has('flash_error'))
<div class="alertFlash alert alert-danger">{!! session('flash_error') !!}</div>
@endif
@show
, но как по мне както неоч такой вариант и хотелось бы чтобы все ошибки были однотипными, например с использованием всплывашек на js через вызов $notify.
Хотелось бы какогото универсального решения или хотябы довольно элегантного....
2. Всю бизнесс логику я выношу в репозитории и собственно при возникновении ошибок я сразу же пробрасываю Exception в духе:
abort(500, 'Текст ошибки);
При текущей моей реализации вполне естественно, что все это приводит к попаданию на 500 страницу и выводом текста ошибки вместо запрашиваемой... А что если ошибка не критичная, но хотелось бы всеравно отобразить ее и открыть страницу + даже с ошибками, которые не будет видно на продакшене.
Собственно както я запутался в стремлении красиво организовать вывод ошибок, а норм примеров в проектах на гитхабе\статьях не смог найти. Буду рад просмотреть любые предложения, ссылки на статьи\репы. Спасибо!