25年度入社の斎藤です。
今回は、Laravelのバリデーション機能であるForm Requestについて、概要を簡単にまとめ、webアプリケーションへの具体的な導入方法について説明しようと思います。
Form Requestとは
FormRequestとはLaravelの機能の一つで、フォームから送られてくるデータのバリデーション(検証)を専用のクラスで管理することができます。Form Requestには以下のメソッドが標準機能として存在します。
authrizeメソッド
バリデーションを行う前に、リクエストが認可(オーソライゼイション)されるかどうかを決定します。
return true : バリデーションに処理が進む
return false : バリデーションを行わず、403 Forbiddenを返しリクエストが拒否される
rulesメソッド
フォームデータに対する検証(バリデーション)ルールを定義します。
バリデーションが通らなければ、デフォルトでは直前の画面にリダイレクトされます。
バリデーションルール記述方法 : [ ‘form要素名’=>’ルール1|ルール2…’ ]
※ルール同士は | 記号で繋げる。また、初めのルールと最後のルールを ‘ 記号で囲む
FormRequestクラスの作成
Larvelプロジェクトフォルダにて、以下のコマンドでFormRequestクラスを継承した子クラス(今回の例ではSampleRequest)を作成します。
※○○Requestという名称にする
※ディレクトリで区切りたい場合は、クラス名指定を”ディレクトリ名/SampleRequest”とすればよい

以下のような、app/Http/Requests/SampleRequest.phpが作成されます。

今回の例では、SampleRequest内のauthrizeメソッド、rulesメソッドに対して以下のように設定します。
1.authrizeメソッドのリターンを常にtrueに変更
→リクエストが常に認可される

2.rulesメソッドにバリデーションルールを追加
フォームデータに対して以下の内容を検証する
$name : 入力必須、最大20文字
$tel : 入力任意、ハイフン区切りの電話番号形式
$email : 入力必須、メールアドレス形式
$body : 入力必須、最大1000文字

FormRequestバリデーションの実行
以下では、フォームデータを受け取るコントローラのメソッドを用意し、FormRequestの子クラスであるSampleRequestを依存性注入することで、バリデーションを機能させます。
例として、以下のようなコントローラ(SampleController.php)を用意する
indexメソッド : Sample.indexビュー を表示
postメソッド : formリクエストを受け取る処理
このコントローラに以下の内容を設定することで、postメソッドにバリデーションを適応させる
1.use を用いて app/Http/Requests/SampleRequest を参照する
2.postメソッドの引数部分にSampleRequest $reruest を記述する(依存性注入)

この設定によってpostメソッドでは、SampleRequestで設定したバリデーションを通過したフォームデータのみを受け取ることができるようになります。
最後に
今回、LaravelのFormRequestについて学んだことで、バリデーション処理を簡単に実装できることを知りました。
特に便利だと感じた点は、多様なバリデーションルールが初めから用意されている点です。自分で複雑な検証ロジックを書く必要がなく、フォームデータの種類ごとにルールを定義するだけで適切なバリデーションが実行される点は、開発効率を大きく向上させると感じました。
今回の話は以上です。
ありがとうございました。
