カテゴリ: Laravel 更新日: 2026/03/12

Laravelでリクエストクラスを使ってフォーム処理を分離する方法

Laravelのリクエストクラスを使ってフォーム処理を分離する方法
Laravelのリクエストクラスを使ってフォーム処理を分離する方法

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

生徒

「先生、Laravelでフォームの処理ってControllerに全部書くのが普通ですか?」

先生

「Controllerに直接書くこともできますが、フォーム処理が複雑になるとコードが長くなり読みにくくなります。そこで、Laravelではリクエストクラスを使って処理を分離する方法があります。」

生徒

「リクエストクラスって何ですか?」

先生

「リクエストクラスとは、フォームから送信されたデータの受け取りやバリデーションをまとめて管理できる特別なクラスです。Controllerをスッキリさせるために使います。」

1. リクエストクラスの作成方法

1. リクエストクラスの作成方法
1. リクエストクラスの作成方法

まず、リクエストクラスを作成します。ターミナルで次のコマンドを実行します。


php artisan make:request StoreUserRequest

このコマンドでapp/Http/RequestsフォルダにStoreUserRequest.phpというファイルが作られます。このクラスがフォームのデータ受け取りとバリデーションを担当します。

2. リクエストクラスでバリデーションを設定する

2. リクエストクラスでバリデーションを設定する
2. リクエストクラスでバリデーションを設定する

作成されたリクエストクラスを開くと、rules()メソッドがあります。ここにバリデーションルールを書きます。


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

例えば、nameは必須で最大50文字、emailは必須かつメール形式、passwordは必須かつ6文字以上としています。

Controllerにバリデーションを直接書く必要がなくなるので、コードが見やすく整理できます。

3. Controllerでリクエストクラスを使う

3. Controllerでリクエストクラスを使う
3. Controllerでリクエストクラスを使う

次に、Controller側でリクエストクラスを使用します。Request型の代わりに、先ほど作成したリクエストクラスを型宣言します。


use App\Http\Requests\StoreUserRequest;

public function store(StoreUserRequest $request)
{
    $data = $request->validated(); // バリデーション済みデータを取得
    // ここでユーザーを作成したり保存したりする
}

これにより、Controller内ではバリデーションが通った安全なデータだけを扱うことができ、処理が非常にシンプルになります。

4. エラーメッセージのカスタマイズ

4. エラーメッセージのカスタマイズ
4. エラーメッセージのカスタマイズ

リクエストクラス内にはmessages()メソッドを追加することで、各入力項目ごとのエラーメッセージを自由に変更できます。


public function messages()
{
    return [
        'name.required' => '名前は必須です。',
        'email.required' => 'メールアドレスは必須です。',
        'email.email' => 'メールアドレスの形式が正しくありません。',
        'password.required' => 'パスワードは必須です。',
        'password.min' => 'パスワードは6文字以上で入力してください。'
    ];
}

ユーザーに分かりやすいメッセージを表示できるので、より親切なフォームを作ることができます。

5. リクエストクラスを使うメリット

5. リクエストクラスを使うメリット
5. リクエストクラスを使うメリット
  • Controllerのコードをスッキリさせ、見やすくなる
  • バリデーションやルールを再利用しやすくなる
  • エラーメッセージの管理が一箇所でできる
  • フォーム処理の保守性が高くなる

複雑なフォームや入力項目が多い場合には特に便利です。Laravelのリクエストクラスを活用することで、効率的で安全なフォーム処理を実現できます。

この記事を読んだ人からの質問

この記事を読んだ人からの質問
この記事を読んだ人からの質問

プログラミング初心者からのよくある疑問/質問を解決します

Laravelでフォーム処理を書くとき、Controllerに全部の処理を書く方法とリクエストクラスを使う方法の違いは何ですか?Laravel初心者でも理解できるように教えてください。

Laravelではフォーム送信されたデータをControllerで処理することができますが、入力項目が増えるとバリデーションやデータ処理が多くなりControllerのコードが長くなります。リクエストクラスを使うと、フォームデータの受け取りやバリデーション処理を専用クラスに分離できるため、Controllerのコードをシンプルに保つことができ、Laravelアプリケーションの保守性や可読性を高めることができます。
カテゴリの一覧へ
新着記事
New1
Laravel
Laravelのルートとコントローラを対応付ける方法(名前付きルート)を初心者向けに解説
New2
Symfony
Symfonyで画像やファイルをアップロードする時のバリデーション完全ガイド!初心者でもわかる入力チェックの基本
New3
Laravel
Laravelで言語切替UIを作る!多言語対応(ローカリゼーション)実践ガイド
New4
CodeIgniter
CodeIgniterでローカル開発環境を構築する方法!初心者向け完全ガイド
人気記事
No.1
Java&Spring記事人気No1
CodeIgniter
CodeIgniterのキャッシュ管理を完全ガイド!初心者でもわかるメリットと注意点
No.2
Java&Spring記事人気No2
Symfony
Symfony学習に役立つおすすめドキュメント・教材・リソース一覧【初心者向け】
No.3
Java&Spring記事人気No3
Laravel
Laravelのプロジェクト構造を理解しよう!初心者向けディレクトリ解説
No.4
Java&Spring記事人気No4
CodeIgniter
CodeIgniterとは?特徴・できること・他PHPフレームワークとの違いを完全解説
No.5
Java&Spring記事人気No5
Laravel
Laravelローカリゼーション入門!言語の取得と切り替え(App::getLocale / setLocale)を徹底解説
No.6
Java&Spring記事人気No6
Symfony
TwigのHTMLエスケープとrawフィルタの使い方を完全解説!初心者にもわかるテンプレート表示のコツ
No.7
Java&Spring記事人気No7
Laravel
Laravelの条件分岐とループ処理をBladeで書く方法
No.8
Java&Spring記事人気No8
CodeIgniter
CodeIgniterのビュー共通化ガイド!初心者でもわかる部分ビューの読み込みとinclude設計