Laravelの「バリデーションとリクエスト処理」における「フォームリクエストクラスの利用」は、コントローラの中でバリデーションロジックを整理・再利用するための強力な方法です。以下に詳しく説明します。
フォームリクエストクラスとは
フォームリクエストクラス(Form Request Class) とは、Laravelが提供するリクエストバリデーション専用のクラスです。リクエストデータのバリデーションルールと認可ロジックをひとつのクラスにまとめることで、コントローラを簡潔に保ち、ロジックの再利用やテストがしやすくなるという利点があります。
作成方法
artisan コマンドでフォームリクエストクラスを作成します。
上記のコマンドで app/Http/Requests/StoreUserRequest.php が生成されます。
フォームリクエストクラスの構造
生成されたクラスの主なメソッドは以下の2つです。
1. authorize メソッド
authorize メソッド
このメソッドでリクエストを許可するかどうかを判定します。認可機能を使わない場合は常に true を返します。
2. rules メソッド
rules メソッド
ここに入力値のバリデーションルールを定義します。通常の $request->validate() と同じルールが使えます。
コントローラでの利用方法
作成したフォームリクエストクラスを、コントローラのメソッド引数に型指定で受け取ります。
validated() メソッドで、バリデーション済みのデータのみを取得できます。
メリット
-
コントローラが簡潔になる:バリデーションロジックが外部化されるため、コントローラがスッキリする。
-
再利用性が高い:同じバリデーションルールを他の場所でも使い回しやすい。
-
テストが容易:バリデーションロジック単体をユニットテスト可能。
-
認可とバリデーションを分離して管理できる。
カスタムメッセージや属性名の定義
フォームリクエストクラス内で以下のように追加可能です。
補足:リクエストライフサイクルとの関係
フォームリクエストクラスは、コントローラの処理に到達する前に自動でバリデーションと認可を実行します。失敗した場合は自動的にリダイレクトされ、エラーメッセージがセッションに保存されます。
まとめ
フォームリクエストクラスは、Laravelにおいて保守性・再利用性・テスト性を高めるための重要なバリデーション手法です。中〜大規模のプロジェクトでは積極的に活用することが推奨されます。
ChatGPT4o 生成日:2025/06/23