2016-07-29 3 views
2

したがって、私は、1つのビューだけで、考えられるすべての予期しないエラー(401,404,500など)をカバーしたいと思います。可能性のあるすべてのエラーに同じビューを表示したい。私は解決策を思いついた - 同じコードをコピー/ペーストし、異なるエラーコードでビューの名前を付けるだけです。しかし、それは堅くて間違っているようです。これを達成するより良い方法はありますか?Laravel - すべての可能性のあるエラーの1つのビュー

答えて

1

この効果を達成するためのよりクリーンな方法は、Laravel's exception handlerを変更することです。

App\Exceptions\Handlerを変更してすべてのエラーをキャッチし、共有カスタムエラーページを返します。

/** 
* Render an exception into an HTTP response. 
* 
* @param \Illuminate\Http\Request $request 
* @param \Exception $e 
* @return \Illuminate\Http\Response 
*/ 
public function render($request, Exception $e) 
{ 
    if ($e instanceof NotFoundHttpException) { 
     return response()->view('errors.custom', [], 404); 
    } 

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

いくつかのカスタマイズが完全にあなたの共有カスタムビューに渡されたデータをどのようにしたい正確に何&を満たすために必要とすることができます。

-1

ハンドラのビューにエラーコードを渡し、ページにコードを表示し、エラーコードに応じてすべてのメッセージを処理するスイッチを使用します。

-1

独自のビュー(デフォルトは404エラー)を作成し、コード内でtry catchを使用して他のエラーをキャプチャし、このビューをパラメータで呼び出すと、404デフォルトエラーを他のエラーに変更できます。

3

ファイルapp/Exceptions/Handler.phpでは、例外がスローされたときの動作を変更できます。特に、renderというメソッドがあり、アプリケーション内のすべての例外をキャッチすることができます。

public function render($request, Exception $e) 
{ 
    // Handle your error here. Perhaps you can show a view 
    // when a condition is met. Anything that isn't caught 
    // here will be handled by Laravel with the 
    // parent::render call below 

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

parent::render($request, $e) Laravelは通常、それは例外/おっとページのショーする場所です。したがって、このメソッドをオーバーライドすると、404,401などのすべてのアプリケーションエラーをキャッチできます。

関連する問題