web-dev-qa-db-ja.com

laravel 5カスタム404

これは私を夢中にさせています。 Laravel 5を使用していますが、4.2のドキュメントと404ページの生成が機能しないようです。

まず、global.phpがないため、routes.phpに次のコードを入れてみました。

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

これにより、「メソッドmissing()が見つかりません」というエラーが発生します。

デバッグはfalseに設定されています。

私は検索して検索しましたが、これまでのところLaravel 5.に404ページを設定することに関する情報は見つかりませんでした。5。手助けをいただければ幸いです。

24
user4147717

Resources/views/errorsに移動し、404ページに必要な内容を含む404.blade.phpファイルを作成します。残りはLaravelが処理します。

46
JNsites

グローバルな解決策が必要な場合は、次のコードを追加して、/ 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);
}
12
Hayk Aghabekyan

Laravel 5では、カスタム404.blade.phpresources/views/errorsの下に置くだけで十分です。他のエラーの場合500のように、app/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にも行います

4
Mithredate

私はケースステートメントアプローチが好きですが、レベルが深くなるいくつかの問題があります。

ただし、これはすべてのエラーをキャッチします。

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

Laravel 5には、app/Exceptions/Handler.phpの下に事前定義されたrenderメソッド(43行目)がすでにあります。 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);
}

注:私のビューはリソース/ビューの下にあります。あなたは何とかしてあなたが望むどこにでもそれを置くことができます。

2
Kent Aguilar

Lavavel 5.8

resources/views/errors/404.blade.phpにファイルを作成し、このコードを追加します。

@extends('errors::minimal')

@section('title', __('Not Found'))
@section('code', '404')

@if($exception)
    @section('message', $exception->getMessage())
@else
    @section('message', __('Not Found'))
@endif

それからあなたのコントローラーであなたは使うことができます:

abort(404, 'Whatever you were looking for, look somewhere else');
0
stillatmylinux