Laravel 開発者として、私たちはさまざまなエラーに遭遇することがよくあります。コーディングエラーが原因で発生する場合もあれば、誤ったユーザー入力や不適切な操作が原因で発生する場合もあります。このようなエラーが発生した場合、優れたエラー処理メカニズムとエラー ページが特に重要です。
この記事では、Laravel のエラー処理メカニズムと、エラーページとジャンプをカスタマイズする方法を紹介します。例としてLaravel 8を使用します。
Laravel では、すべての例外は例外ハンドラーにスローされます。このハンドラーは、これらの例外に応答する方法を決定する責任があります。 Laravel は、すべての例外を処理するためにデフォルトで AppExceptionsHandler
クラスを提供します。
例外応答をカスタマイズする場合は、Handler
クラスで直接編集できます。たとえば、render
メソッドを使用して例外応答をカスタマイズできます。
public function render($request, Throwable $exception) { if ($exception instanceof ModelNotFoundException) { return response()->json([ 'message' => 'Record not found' ], 404); } return parent::render($request, $exception); }
上記のコードは、モデルが見つからない場合に応答する方法を示しています。ここでは、response()->json
を使用して、JSON 形式でエラー応答を返します。ビューを返したい場合は、view()
ヘルパー関数を使用できます。
例外ハンドラーに加えて、HTTP エラー ページもカスタマイズする必要があります。 Laravel ではこのプロセスが非常に簡単になります。必要なのは、対応するビューを resources/views/errors
ディレクトリに作成することだけです。例:
resources/views/errors/404.blade.php
は HTTP 404 エラー resources/views/errors/500 を処理します。 .blade.php
HTTP 500 エラーを処理しますこれらのビューを美しくし、スタイルを設定する必要があることに注意してください。ここでは最も基本的な応答のみを提供します。
アプリケーションが運用モードで実行されており、サンプル データが設定されていない場合は、APP_DEBUG
環境変数を変更してデバッグ モードを無効にし、キャッシュを有効にします。
カスタム エラー応答に加えて、アプリケーション内のリダイレクトもカスタマイズできます。最も一般的なリダイレクト状況は、ユーザーが認証されていないため、ログイン ページにリダイレクトする必要がある場合です。 Laravel では、ミドルウェア
を使用してルート、コントローラー メソッドなどを保護します。
たとえば、auth
ミドルウェアを使用して dashboard
ルーティングを保護できます:
Route::get('/dashboard', function () { // })->middleware(['auth']);
ユーザーが認証されていない場合、Laravel は自動的にユーザーをは、Laravel の組み込み承認ミドルウェアの機能である login
ルートにリダイレクトされます。リダイレクトをカスタマイズする場合は、RedirectIfAuthenticated
ミドルウェアを使用できます。これにより、ユーザーが既にログインしているときに特定のページにリダイレクトできます。
たとえば、ログインしているユーザーを /login
ページから /dashboard
にリダイレクトするには:
public function handle($request, Closure $next) { if (Auth::check()) { return redirect('/dashboard'); } return $next($request); }
これは、次のエラーを処理する方法です。 Laravel とカスタムのリダイレクト方法。カスタム エラー ページとリダイレクトは、アプリケーションのユーザー エクスペリエンスを確実に向上させ、アプリケーションのアクセシビリティを向上させることができます。もちろん、先ほど述べたように、不明なエラーが発生した場合は、ユーザーが問題の解決方法を判断できるように、わかりやすいエラー プロンプトも提供する必要があります。
以上がlaravelエラージャンプの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。