laravel 5 custom 404

Это сводит меня с ума. Я работаю с Laravel 5, и похоже, что документы для 4.2 и генерация 404 страниц не работают.

Во-первых, нет global.php, поэтому я попытался поместить следующее в routes.php:

App::missing(function($exception)
{
    return Response::view('errors.missing', array(), 404);
});

Это приводит к ошибке "метод missing() не найден"

Для параметра Debug установлено значение false.

Я искал и искал, но пока не нашел информации о настройке 404 страниц в Laravel 5. Поблагодарил бы за любую помощь.

Ответы

Ответ 1

Перейдите к ресурсам/представлениям/ошибкам и создайте файл 404.blade.php с тем, что вы хотите на своей странице 404, и Laravel позаботится обо всем остальном.

Ответ 2

если вы хотите иметь какое-то глобальное решение, вы можете внести изменения в /app/Exceptions/Handler.php, добавив следующий код

public function render($request, Exception $e)
{
    if ($this->isHttpException($e)) {

        $statusCode = $e->getStatusCode();

        switch ($statusCode) {

            case '404':
                return response()->view('layouts/index', [
                    'content' => view('errors/404')
                ]);
        }
    }
    return parent::render($request, $e);
}

Ответ 3

Мне нравится подход к описанию дела, но у него есть некоторые проблемы, идущие на глубину.

Тем не менее, это уловляет все ошибки:

Route::any('/{page?}',function(){
  return View::make('errors.404');
})->where('page','.*');

Ответ 4

Laravel 5 уже имеет предопределенный метод визуализации (строка 43) в приложении/Исключения /Handler.php. Просто вставьте код перенаправления перед parent :: render. Вот так,

public function render($request, Exception $e)
{
    if ($e instanceof ModelNotFoundException) 
    {
        $e = new NotFoundHttpException($e->getMessage(), $e);
    }

    //insert this snippet
    if ($this->isHttpException($e)) 
    {
        $statusCode = $e->getStatusCode();
        switch ($statusCode) 
        {
            case '404': return response()->view('error', array(), 404);
        }
    }

    return parent::render($request, $e);
}

Примечание. Мое мнение связано с ресурсами/представлениями. Вы можете как-то положить его куда угодно.

Ответ 5

В Laravel 5 вы можете просто добавить пользовательский файл 404.blade.php в разделе ресурсов/представлений/ошибок и его. Для других ошибок, таких как 500, вы можете попробовать следующее в своем приложении /Exeptions/Handler.php:

public function render($request, Exception $e)
{

    if ( ! config('app.debug') && ! $this->isHttpException($e)) {
        return response()->view('errors.500');
    }

    return parent::render($request, $e);
}

И сделайте то же самое для 500 HTTP Exeptions