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

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のリクエストクラスを活用することで、効率的で安全なフォーム処理を実現できます。

カテゴリの一覧へ
新着記事
New1
Laravel
Laravelのコントローラでリクエストをログ出力する方法を初心者向けに解説
New2
Laravel
Laravelでモデルからデータを取得・保存・更新・削除する方法を完全ガイド!初心者でもわかるEloquent ORM入門
New3
Symfony
Symfonyのセッション管理完全ガイド!初心者でもわかるセッションドライバ設定(file・Redis)
New4
Laravel
Laravelのエラーメッセージをカスタマイズする方法|初心者向けガイド
人気記事
No.1
Java&Spring記事人気No1
Laravel
LaravelでBasic認証を実装するミドルウェアの使い方!初心者向けガイド
No.2
Java&Spring記事人気No2
Symfony
SymfonyでTwigテンプレートを表示する方法を完全ガイド!初心者にもわかるHTMLとの違いや使い方
No.3
Java&Spring記事人気No3
Laravel
Laravelのデータベース設定方法を完全ガイド!初心者でもわかる.envファイルの使い方
No.4
Java&Spring記事人気No4
Laravel
Laravelでモデルからデータを取得・保存・更新・削除する方法を完全ガイド!初心者でもわかるEloquent ORM入門
No.5
Java&Spring記事人気No5
Laravel
LaravelでファクトリとSeederを組み合わせてダミーデータを生成する方法!初心者でも簡単にテストデータ作成
No.6
Java&Spring記事人気No6
Symfony
Symfonyのコントローラでリダイレクトする方法を徹底解説!初心者にもやさしく解説
No.7
Java&Spring記事人気No7
Laravel
LaravelのテストでCSRFやセッションの扱いをやさしく理解しよう!初心者向け完全ガイド
No.8
Java&Spring記事人気No8
Laravel
Laravelでセレクトボックスを生成・バインドする方法(選択肢の動的生成)