За последние 24 часа нас посетил 20551 программист и 1086 роботов. Сейчас ищут 686 программистов ...

Как в Laravel 5.5 сделать кастомные страницы с ошибками?

Тема в разделе "Laravel", создана пользователем xintrea, 4 май 2019.

Метки:
  1. xintrea

    xintrea Активный пользователь

    С нами с:
    25 фев 2019
    Сообщения:
    68
    Симпатии:
    0
    В документации написано, что чтобы сделать кастомные страницы с ошибками, достаточно создать каталог resources/views/errors, а в нем файлы вида 404.blade.php

    https://laravel.com/docs/5.5/errors#custom-http-error-pages

    Я сделал так, насоздавал в resources/views/errors файлы:

    Код (Text):
    1.  
    2. 404.blade.php
    3. 419.blade.php
    4. 429.blade.php
    5. 500.blade.php
    6. 503.blade.php
    7. layout.blade.php
    Но проблема в том, что все равно показываются стандартные страницы с ошибкой. Сбросил все виды кеша - толку никакого.

    Нашел еще решение, что для того, чтобы эти страницы заработали, нужно изменить метод render() в файле app/Exceptions/Handler.php:

    Код (PHP):
    1.   public function render($request, Exception $exception) {
    2.    
    3.   info("In Exception render");
    4.    
    5.   // Отрисовка самодельных страниц с ошибками
    6.   if ($this->isHttpException($exception)) {
    7.    
    8.       info("Detect Exception with code ".$exception->getStatusCode());
    9.    
    10.       if (view()->exists('errors.' . $exception->getStatusCode())) {
    11.           return response()->view('errors.' . $exception->getStatusCode(), [], $exception->getStatusCode());
    12.       }
    13.   }
    14.    
    15.   return parent::render($request, $exception);
    16.   }
    Но проблема в том, что когда происходит ошибка, например 404, до этого метода render() дело не доходит. Строки "In Exception render" в логе не появляется, и рисуется стандартная страница.

    Вопрос: как правильно сделать свои собственные страницы об ошибке?
     
  2. xintrea

    xintrea Активный пользователь

    С нами с:
    25 фев 2019
    Сообщения:
    68
    Симпатии:
    0
    Вопрос снят, просто препутал серверы разработчика и продакшен.