2016-11-04 16 views
0

laravel 5.3でカスタムエラーを処理しようとしていますが、アボート(404)が正しくキャッチされないようです。Laravel 5.3 abort()からのエラー処理

私のルート(web.php)にアボートを置くと、404ページが表示されます。

私はブレードでアボートを入れた場合、私はNotFoundHttpExceptionメッセージが表示されますが、私のフォールバックエラー状態、500

アプリ/例外/ handler.phpデフォルトは機能をレンダリング:

// 404 page when a model is not found 
    if ($exception instanceof ModelNotFoundException or $exception instanceof NotFoundHttpException) { 
     return response()->view('errors.404', $requestAndException, 404); 
    } 

    if ($this->isHttpException($exception)) { 
     //return $this->renderHttpException($exception); 
     // mirrored code from renderHttpException to allow for exception-less errors in non-dev mode 
     $status = $exception->getStatusCode(); 

     if (view()->exists("errors.{$status}")) { 
      return response()->view("errors.{$status}", $requestAndException, $status, $exception->getHeaders()); 
     } else { 
      return $this->convertExceptionToResponse($exception); 
     } 
    } else { 
     // Custom error 500 view on production 
     return response()->view('errors.500', $requestAndException, 500); 
    } 

私は特定の例外を使って使用セクションを更新しようとしましたが、違いは見られませんでした。現在の位置:

use Exception; 
use Illuminate\Auth\AuthenticationException; 
use Illuminate\Foundation\Exceptions\Handler as ExceptionHandler; 

答えて

0

あなたのビューフォルダで "errors"というフォルダを作成し、その中に例外のカスタムビューを作成します:404.blade.php、500.blade.php。 ビューの名前と同じステータスのアボートがある場合、Laravelはそれを処理しますので、ルートに配置する必要はありません。

+0

私はそれを持っています。それは動作しません。私がビューの中から中止を呼び出すとき。 "私のルート(web.php)に打ち切りを入れた場合、404ページが表示されます。 ブレードにアボートを入れると、NotFoundHttpExceptionメッセージが表示されますが、フォールバックエラー状態のデフォルトは500です。 " –

+0

これをルートに配置する必要はありません。エラーフォルダに正しい名前のビューを作成するだけで、laravelがすべてのことを処理します。 –

+0

コントローラやミドルウェアの中止を中止します。 –