404ページを実装するにはどうすればよいですか?実際には多くの方法があります。次に、この記事では、Laravel 5.5 以降のフレームワークを使用して 404 応答をより適切に実装する方法を紹介します。早速、具体的な内容を見てみましょう。
Laravel 5.5.10 には、ユーザーにより良い 404 ページを提供するのに役立つ 2 つの便利なルーター メソッドがカプセル化されています。 404 例外がスローされると、Laravel は美しい 404.blade.php ビュー ファイルを表示します。このビュー ファイルはユーザー UI に表示するようにカスタマイズできますが、このビューでは session、 にアクセスできません。 Cookie 、認証 (auth) など...
laravel 5.5.10 では、リクエストルーティングに一致するルートが他にない場合の Laravel のフォールバックを定義する新しい Route::fallback() メソッドがあります。
Route::fallback(function () { return 'Sorry' . auth()->user()->name . '! This page does not exist.'; });
これで、シンプルな 404 ビューを、通常のページとフッターを備えたアプリ レイアウトに置き換えることができると同時に、ユーザーにフレンドリーなメッセージも表示できるようになりました。
Route::fallback(function() { return response()->view('notFound', [], 404); });
@extends('layout.app') @section('content') <h3>Sorry! this page doesn't exist.</h3> @stop
Laravel がこのフォールバック ルートをレンダリングするとき、すべてのミドルウェアが実行されるため、web.php ルート ファイルでフォールバック ルートを定義すると、web ミドルウェア グループ内のすべてのミドルウェアが実行されます。 セッションデータを取得できます。
これで、/non-existing-page をクリックすると、/api/non-existing-endpoint をクリックした場合でも、フォールバック ルートで定義されたビューが表示されます。このインターフェースを提供したくない場合は、api フォールバック ルートで JSON 応答を定義できます。api.php ルーティング ファイルで別のフォールバック ルートを定義しましょう。API ミドルウェア グループには
/ が付属しているため、 apiプレフィックスを使用すると、/api プレフィックスを持つすべての未定義ルートは、 web.php ルーティング ファイルで定義されたルートではなく、api.php ルーティング ファイル内のフォールバック ルートに移動します。 abort(404) と ModelNotFound 例外を使用する
を使用すると、NotFoundHttpException がスローされます。この時点で、プロセッサは 404.blade.php ビュー ファイルをレンダリングします。同じ ModelNotFoundException 例外は同じ方法で処理されます。通常のビューではなくフォールバック ルートのビューをより適切にレンダリングできるようにするには、どのように処理すればよいでしょうか? Route::fallback(function() {
return response()->json(['message' => 'Not Found!]);
});
戻って、fallbackという名前のルートを実行します。class Handler extends ExceptionHandler
{
public function render($request, Exception $exception)
{
if ($exception instanceof NotFoundHttpException) {
return Route::responseWithRoute('fallback');
}
if ($exception instanceof ModelNotFoundException) {
return Route::responseWithRoute('fallback');
}
return parent::render($request, $exception);
}
}
Route::fallback(function() { return response()->view('notFound', [], 404); })->name('fallback');
if ($exception instanceof ModelNotFoundException) { return $exception->getModel() == Server::class ? Route::respondWithRoute('serverFallback') : Route::respondWithRoute('fallback'); }
mac mamp ngiux laravel フレームワークが 404 エラーを報告する
Laravel 5.5 応答性インターフェイスを実装する方法
以上がLaravel 5.5+ フレームワークで 404 レスポンスをより適切に実装する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。