2017-03-09 28 views
3

のために、私はこれを実行するにはLaravel 5.4Laravel 5.4 |カスタムページはNotFoundHttpException

にNotFoundHttpExceptionの場合には、カスタム404ページにユーザーをリダイレクトしようとしています、私はHandler.phpファイル\アプリケーション\例外でコードの一部を、次の追加:

public function render($request, Exception $exception) 
{ 
    if ($exception instanceof NotFoundHttpException) { 
     if ($request->expectsJson()) { 
      return response()->json(['error' => 'Not Found'], 404); 
     } 
     return response()->view('404', [], 404); 
    } 
    return parent::render($request, $exception); 
} 

これは機能しません。ここで何か間違っていると誰かが指摘してくれる?

ありがとうございます!

+1

Havaは正しい名前空間 'を使用しました.Symfony \ Component \ HttpKernel \ Exception \ NotFoundHttpException; –

+0

@Williamwei - ありがとう、トン。私はそれを完全に忘れてしまった。 – whitecollar

答えて

4

ただ、ここにあなたのビューを作成

resources/views/errors/404.blade.php 

LaravelはLaravelはデフォルトのビューに戻って落ちる前に、あなたのエラーページをレンダリングします

6

あなたのために自動的にそれを提供します。

ビューが作成されている場合:resources/views/errors/404.blade.php。このページは、フォールバックエラーページの前にレンダリングされます。

上記のディレクトリのビューには、レンダリングしようとしているHTTPステータスコードの名前が必要です。

詳しい情報はlaravelのドキュメントで見つけることができます:

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

3

あなたはレンダリング機能を変更する必要はありません。元のようにそれを保管してください:

public function render($request, Exception $exception) 
{ 
    return parent::render($request, $exception); 
} 

あなたがしなければならないのは、単にビューを作成します

リソース/ビュー/エラー/ 404.blade.php

その後、いくつかの追加コンテンツをファイルに追加します。

@extends('layouts.app') 

@section('content') 
404 
@endsection 

Laravelが残りを処理します。

+0

全く同じことを言っている2つの答えがすでにあります。もう一度返信するのではなく、投票したりコメントを使って追加情報を追加したりすることを検討してください。 – ruuter

+0

ありがとうそれは私のために働く。あなたは私の時間を節約する – LetsCMS