カテゴリ: Laravel 更新日: 2025/12/17

LaravelでFormRequestを使ったフォーム設計のベストプラクティス

LaravelでFormRequestを使ったフォーム設計のベストプラクティス
LaravelでFormRequestを使ったフォーム設計のベストプラクティス

先生と生徒の会話形式で理解しよう

生徒

「Laravelでフォームの入力チェックって、毎回コントローラに書くのは大変ですよね?」

先生

「その通りです。そんなときに便利なのがFormRequestです。フォームのバリデーションを専用のクラスにまとめられます。」

生徒

「FormRequestって具体的にどう使うんですか?」

先生

「順を追って説明しましょう。まずは作成方法からです。」

1. FormRequestの作成方法

1. FormRequestの作成方法
1. FormRequestの作成方法

Laravelでは、artisanコマンドでFormRequestを作成できます。FormRequestはフォームの入力をまとめて管理し、バリデーションや認可を簡単に行えるクラスです。


php artisan make:request StoreUserRequest

これによりapp/Http/RequestsディレクトリにStoreUserRequest.phpが作成されます。

2. バリデーションルールの定義

2. バリデーションルールの定義
2. バリデーションルールの定義

作成したFormRequestクラスのrules()メソッドで、フォームの入力チェックルールを定義します。ルールは配列形式で指定します。


public function rules()
{
    return [
        'name' => 'required|string|max:50',
        'email' => 'required|email|unique:users,email',
        'password' => 'required|string|min:8|confirmed',
    ];
}

例えばrequiredは必須、stringは文字列、max:50は最大50文字といった意味です。confirmedは確認用パスワードと一致しているかを確認します。

3. 認可処理の設定

3. 認可処理の設定
3. 認可処理の設定

FormRequestにはauthorize()メソッドがあります。ここでユーザーがこのフォームを送信する権限があるかをチェックできます。


public function authorize()
{
    return auth()->check(); // ログインしていれば許可
}

例えば、管理者だけが特定のフォームを送信できる場合は、条件を追加することも可能です。

4. コントローラでの利用

4. コントローラでの利用
4. コントローラでの利用

コントローラではFormRequestを型ヒントとして受け取るだけで、バリデーションと認可が自動的に適用されます。


use App\Http\Requests\StoreUserRequest;

public function store(StoreUserRequest $request)
{
    $data = $request->validated(); // バリデーション済みデータを取得

    \App\Models\User::create($data);

    return redirect()->route('users.index')->with('success', 'ユーザーを作成しました');
}

バリデーションエラーがある場合は、自動で前の画面にリダイレクトされ、エラー情報がセッションに保存されます。

5. FormRequest活用のベストプラクティス

5. FormRequest活用のベストプラクティス
5. FormRequest活用のベストプラクティス
  • フォームごとに専用のFormRequestを作成して、コントローラをシンプルに保つ
  • ルールはわかりやすくコメントをつけると保守性が向上
  • 認可はauthorize()にまとめて、権限管理を統一
  • カスタムエラーメッセージはmessages()メソッドで定義可能
  • 複雑な条件分岐のバリデーションはwithValidator()で追加可能

6. まとめの補足ポイント

6. まとめの補足ポイント
6. まとめの補足ポイント

FormRequestを使うことで、フォームの入力チェック、認可、エラーメッセージ管理を一か所にまとめられます。コントローラがシンプルになり、保守性や再利用性も向上します。初心者でも慣れてくると、プロジェクトの規模が大きくなった場合に非常に役立つ技術です。

カテゴリの一覧へ
新着記事
New1
Laravel
Laravelの認証状態をチェックする方法を完全解説!authとAuth::check()を初心者向けにやさしく説明
New2
CodeIgniter
CodeIgniterのコントローラクラスの作り方を完全ガイド!初心者でもわかる基礎から実践まで
New3
Symfony
Symfonyのフォームラベルを多言語対応!初心者でもわかる翻訳設定ガイド
New4
Laravel
Laravelでユーザー登録機能を作る方法!初心者向けにバリデーションとリダイレクトをやさしく解説
人気記事
No.1
Java&Spring記事人気No1
Laravel
Laravelのデータベース設定方法を完全ガイド!初心者でもわかる.envファイルの使い方
No.2
Java&Spring記事人気No2
Laravel
Laravelのビューとは?Bladeテンプレートの基本を解説
No.3
Java&Spring記事人気No3
Laravel
Laravelでセッションを扱う方法!保存方法と利用例を解説
No.4
Java&Spring記事人気No4
Laravel
Laravelのルート一覧を確認する方法!初心者でもわかるphp artisan route:listの使い方
No.5
Java&Spring記事人気No5
Laravel
Laravelでルーティングを設定する方法!web.phpと基本ルートの書き方を初心者向けに徹底解説
No.6
Java&Spring記事人気No6
Laravel
Laravelのルートキャッシュ機能を活用してパフォーマンス改善!初心者でもわかる完全ガイド
No.7
Java&Spring記事人気No7
Laravel
LaravelでルートをBladeテンプレートに記述する方法(route関数)
No.8
Java&Spring記事人気No8
Laravel
Laravelでログを出力する方法(Monolog・storage/logs)