@Neversmille

А как вы организовуете вывод ошибок в laravel?

Всем привет. Совсем недавно начал осваивать 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 страницу и выводом текста ошибки вместо запрашиваемой... А что если ошибка не критичная, но хотелось бы всеравно отобразить ее и открыть страницу + даже с ошибками, которые не будет видно на продакшене.

Собственно както я запутался в стремлении красиво организовать вывод ошибок, а норм примеров в проектах на гитхабе\статьях не смог найти. Буду рад просмотреть любые предложения, ссылки на статьи\репы. Спасибо!
  • Вопрос задан
  • 1045 просмотров
Пригласить эксперта
Ответы на вопрос 1
tridcatij
@tridcatij
Я всю нужную инфу кидаю в лог (по категориям). Просмотр лога вывел в админку, просмотр через эту приблуду:
Laravel 5 log viewer
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы