カテゴリ: 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の認証状態をチェックする方法を完全解説!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でログを出力する方法(Monolog・storage/logs)
No.7
Java&Spring記事人気No7
Laravel
Laravelのルートキャッシュ機能を活用してパフォーマンス改善!初心者でもわかる完全ガイド
No.8
Java&Spring記事人気No8
Laravel
LaravelでルートをBladeテンプレートに記述する方法(route関数)