カテゴリ: 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でAPIのレスポンスをテストする方法を完全解説!assertJsonで初心者も安心
New2
CodeIgniter
CodeIgniterでRESTful API開発!初心者でもわかる全体構成ガイド
New3
Symfony
Symfonyのコントローラとは?作成・構造・役割を初心者向けにやさしく解説!
New4
Symfony
Symfonyでバリデーションメッセージを多言語対応する方法!初心者でもわかる国際化の基本
人気記事
No.1
Java&Spring記事人気No1
Laravel
Laravelで動的パラメータをルートに渡す方法!初心者にもやさしいルートパラメータの使い方入門
No.2
Java&Spring記事人気No2
Laravel
Laravelのシングルアクションコントローラとは?使い方と利点
No.3
Java&Spring記事人気No3
Symfony
Symfonyの依存性注入(DI)とは?コンストラクタでの注入方法を初心者向けに徹底解説
No.4
Java&Spring記事人気No4
Laravel
LaravelのBlade構文まとめ!@if @foreach など基本ディレクティブ解説
No.5
Java&Spring記事人気No5
Laravel
Laravelでキャッシュを使う方法(ファイル・Redis・Memcached)
No.6
Java&Spring記事人気No6
Laravel
Laravelのマイグレーション履歴を確認する方法を徹底解説!migrate:statusの使い方
No.7
Java&Spring記事人気No7
Laravel
Laravelで名前付きルートを設定する方法!初心者でもわかるroute()関数の使い方
No.8
Java&Spring記事人気No8
Laravel
Laravelでコントローラを作成する方法(artisanコマンド)