2017-03-09 79 views
3

我想給用戶自定義的404頁面重定向NotFoundHttpException的情況下,Laravel 5.4Laravel 5.4 |自定義頁面NotFoundHttpException

要做到這一點,我添加了應用程序\例外\ 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使用了正確的命名空間'use Symfony \ Component \ HttpKernel \ Exception \ NotFoundHttpException;'? –

+0

@Williamwei - 非常感謝。我完全忘了包括它。 – whitecollar

回答

4

就在這裏創建

resources/views/errors/404.blade.php 

視圖Laravel會自動替你服刑

6

Laravel將呈現回落的默認視圖之前您的錯誤頁面。

如果您的視圖創建於: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

已經有兩個答案說完全一樣。不要再回答,而應考慮對這些人進行投票和/或通過評論添加其他信息。 – ruuter

+0

謝謝它適合我。你節省了我的時間 – LetsCMS