Новостная рассылка
Присоединяйтесь к нашему новостному бюллетеню и не пропускайте новости из мира Laravel, анонсы полезных пакетов и советы опытных разработчиков.

Небольшие улучшения внешнего вида сообщений об ошибках в Laravel 5.5

Автор статьи Eric L. Barnes Eric L. Barnes | Laravel 5.5 Gets Improvements with the Default Error Views | Николенко Виталий

В Laravel 5.5 улучшен дизайн дефолтных страниц сообщений об ошибках. Теперь эти страницы расширяют лейаут errors::layout и в них внесены некоторые внешние улучшения. Вот как выглядит старая страница ошибок 50*

А вот ее внешний вид в Laravel 5.5

Изменение сообщений об ошибках по умолчанию

Также как и раньше вы легко можете изменить представления страниц с сообщением об ошибке при помощи создания своих шаблонов в директории resources/views/errors. Необходимо назвать ваш шаблон по коду ошибки. Например для ошибки 500, шаблон должен называться resources/views/errors/500.blade.php

Внутри шаблоны можно модифицировать следующие секции

@extends('errors::layout')

@section('title', 'Ошибка')

@section('message', 'Ой, у нас ошибка, но мы ее уже устраняем, не уходите далеко :)')

Родительский лейаут errors::layout берется из недр фреймворка И вы можете испольщовать его, либо создать свой собственный.

По умолчанию Ларавел включает в себя следующие шаблоны ошибок

  • 404.blade.php
  • 419.blade.php
  • 500.blade.php
  • 503.blade.php

И если вам интересно, как же фреймворк выбирает шаблон для отображения страницы ошибки, посмотрите внутрь метода renderHttpException

Первая часть — это вызов метода replaceNamespace  который дает указание для начала заглянуть внутрь директории resources/views затем брать шаблон уже внутри фреймворка.

view()->replaceNamespace('errors', [
    resource_path('views/errors'),
    __DIR__.'/views',
]);

Затем метод возвращает представление согласно коду ошибки

return response()->view("errors::{$status}"

Стоит также упомянуть, что можно также задать директории для поиска шаблонов при помощи конфигурационного файла config/views.php

'paths' => [
    realpath(base_path('resources/views/new-design')),
    realpath(base_path('resources/views')),
],

Теперь Laravel сначала будет искать шаблон в папке new-design, а если не найдет — отправится в директорию views.




В Laravel 5.5 появится поддержка отчетов в собственных исключениях

В Laravel 5.5 можно будет при создании собственного исключения определить в нем метод для отправки отчета и он выполнится.

Новые функции-помощники в Laravel 5.5: throw_if и throw_unless

В Laravel 5.5 будут доступны две новые вспомогательные функции `throw_if` и `throw_unless`