カテゴリ: Laravel 更新日: 2026/08/26

Laravelで複数フィールドにバリデーションをかける方法

Laravelで複数フィールドにバリデーションをかける方法
Laravelで複数フィールドにバリデーションをかける方法

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

生徒

「複数の入力項目に対してまとめてチェックしたい場合は、どう書けばいいんですか?」

先生

「たとえば『名前』『メール』『パスワード』など、複数のフィールドを一度にチェックできます。Laravelでは複数フィールドのバリデーションも簡単です。」

生徒

「どうやってモデルの複数項目をまとめてバリデーションするのか、初心者でもわかるように教えてください!」

先生

「もちろん。フォームから送信された複数の入力項目すべてに、必要な条件を正しくチェックする方法をわかりやすく説明していきます。」

1. 複数フィールドにバリデーションをかけるとは?

1. 複数フィールドにバリデーションをかけるとは?
1. 複数フィールドにバリデーションをかけるとは?

複数フィールドにバリデーションをかけるとは、フォームの複数の入力欄(たとえば名前、メールアドレス、パスワード)に対して、それぞれ正しい入力内容かをまとめて確認することです。たとえるなら、複数の書類を同時にチェックして、すべて問題なく記入されているか確かめるイメージです。

Laravelのバリデーション機能を使えば、複数の入力項目を一度にチェックでき、まとめてエラーメッセージも表示できるので、とても便利です。入力ミスや未入力を防ぐことで、ユーザーが正しい情報を送信できるようになり、システムの安全性やデータの正確性も向上します。

たとえば、次のようなシンプルな入力チェックを考えてみましょう。


$name = $_POST['name'] ?? '';
$email = $_POST['email'] ?? '';

if ($name == '' || $email == '') {
  echo '未入力の項目があります';
} else {
  echo 'すべて入力されています';
}

このように複数の項目を同時にチェックすることで、どれか1つでも問題があればすぐに気づくことができます。Laravelでは、これをもっと簡単かつ分かりやすく書けるため、初心者でも効率よくフォームの入力チェックを実装できます。

2. コントローラで複数フィールドをまとめてバリデーションする方法

2. コントローラで複数フィールドをまとめてバリデーションする方法
2. コントローラで複数フィールドをまとめてバリデーションする方法

Laravelのコントローラでは、$request->validate() メソッドを使うことで、複数フィールドの入力内容を一度にチェックできます。フォームから送信されたデータをまとめて検証できるため、シンプルかつ効率よく入力チェックを実装できるのが特徴です。

まずは初心者向けに、基本的な書き方を見てみましょう。


public function register(Request $request)
{
    $validated = $request->validate([
        'name' => 'required|max:50',
        'email' => 'required|email|unique:users,email',
        'password' => 'required|min:8|confirmed',
    ]);

    echo 'バリデーションOK';
}

このコードでは、「name」「email」「password」の3つの入力項目に対して、それぞれルールを設定しています。たとえば「required」は未入力を防ぎ、「email」は正しいメール形式かをチェックします。「confirmed」は確認用パスワードと一致しているかを検証するルールです。

もし条件を満たさない場合は、自動的に元の画面へ戻り、エラーメッセージが表示されます。逆にすべての条件を満たすと、次の処理へ進みます。

このように、複数フィールドのバリデーションを1つの配列でまとめて定義できるため、コードが読みやすくなり、入力ミスの防止にもつながります。実務でもよく使われる基本パターンなので、まずはこの書き方に慣れておくとスムーズです。

3. フォームリクエストで複数フィールドを整理する方法

3. フォームリクエストで複数フィールドを整理する方法
3. フォームリクエストで複数フィールドを整理する方法

複数のフィールドに対して多くのルールを設定すると、コントローラのコードが長くなり見づらくなります。そこでフォームリクエスト(専用クラス)を使います。


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

フォームリクエストを使うと、複数フィールドのバリデーションルールを整理して書けて、コントローラがスッキリします。

4. 条件付きで複数フィールドをバリデーションする方法

4. 条件付きで複数フィールドをバリデーションする方法
4. 条件付きで複数フィールドをバリデーションする方法

ある条件に応じて一部のフィールドだけバリデーションをかけたい場合があります。たとえば「住所」があるときだけ「郵便番号」もチェックしたい場合などです。


public function rules()
{
    return [
        'address' => 'nullable|string',
        'postal_code' => 'required_if:address,!=,null|numeric',
    ];
}

この例では、postal_codeは address が入力されているときに必須とするルールです。

5. 配列形式のフィールドに対してバリデーションする方法

5. 配列形式のフィールドに対してバリデーションする方法
5. 配列形式のフィールドに対してバリデーションする方法

フォームで「電話番号を複数」「チェックボックスが複数」など配列形式の入力がある場合も、Laravelではまとめてバリデーションできます。


'phones.*' => 'required|numeric',
'emails.*' => 'required|email',

このように *.(アスタリスク) を使うことで、複数の配列要素すべてに対してルールを適用できます。

6. 複数フィールドでエラーメッセージを丁寧に表示する方法

6. 複数フィールドでエラーメッセージを丁寧に表示する方法
6. 複数フィールドでエラーメッセージを丁寧に表示する方法

複数フィールドにエラーがあると、それぞれどこで問題が起きたかユーザーに伝える必要があります。Bladeテンプレートでエラー一覧を表示すればわかりやすくなります。


@if ($errors->any())
  <div class="alert alert-danger">
    <ul>
      @foreach ($errors->all() as $error)
        <li>{{ $error }}</li>
      @endforeach
    </ul>
  </div>
@endif

これにより、「名前が未入力」「メールの形式が不正」「パスワード確認が合っていない」など、複数のエラーをまとめて表示できます。

7. 複数ルールを組み合わせて使うコツ

7. 複数ルールを組み合わせて使うコツ
7. 複数ルールを組み合わせて使うコツ

複数のバリデーションルールは「|(パイプ)」でつなげてまとめます。たとえば:


'email' => 'required|email|unique:users,email',
'password' => 'required|min:8|confirmed',

このように書くことで、複数フィールドに対して必要な条件をわかりやすく一行でまとめて指定できます。

まとめ

まとめ
まとめ

複数フィールドにバリデーションをかける方法は、Laravelを使った開発の中でも特に重要な基礎となる部分です。ひとつひとつの入力欄を丁寧にチェックすることはもちろん大切ですが、実際のWebアプリでは複数の入力項目をまとめて扱う場面が多くあります。名前やメールアドレス、パスワードなどの基本情報から、住所や電話番号、趣味のチェックボックスなどの配列形式の入力まで、多くのケースで複数フィールドに対する正確なバリデーションが必要とされます。フォームの入力内容を安全に扱うためには、ユーザーが間違った情報を入力した場合に何が問題なのかをわかりやすく伝える仕組みを整えることが欠かせません。 Laravelは、複数フィールドのバリデーションを効率よく扱うための機能が豊富に揃っているため、初めて学ぶ人でも比較的早く慣れることができます。コントローラで一括してチェックする方法、フォームリクエストを作成してバリデーションルールを整理する方法、条件付きで特定のフィールドだけにルールを適用する方法、さらには配列形式で複数入力を扱うときの共通チェックなど、さまざまな場面に応じて柔軟に活用できます。また、エラーメッセージの表示方法を工夫することで、ユーザーにとって使いやすいフォームを作ることができ、入力ミスを防ぐことにもつながります。 フォームの入力を丁寧に扱うことは、ユーザーにとって安心して情報を入力できる環境をつくることにもつながります。複数フィールドのバリデーションができるようになると、会員登録フォームや問い合わせフォームなど、実際の開発で必要とされる多くの項目にも対応できるようになり、Laravelでの開発の幅が大きく広がります。ここでは理解の助けとして、複数フィールドに対するバリデーションを行うためのサンプルコードを改めて示しますので、復習しながら活用してみてください。

複数フィールドをバリデーションするサンプルコード


public function register(Request $request)
{
    $validated = $request->validate([
        'name' => 'required|max:50',
        'email' => 'required|email|unique:users,email',
        'password' => 'required|min:8|confirmed',
        'phones.*' => 'nullable|numeric',
    ]);

    // バリデーション通過後の処理
    User::create($validated);
    return redirect()->route('home');
}
    

このサンプルでは、単一のフィールドだけでなく配列形式(phones.*)の入力も含めてまとめてチェックしています。実際の開発では入力項目がさらに増えることも多いため、これらの書き方を組み合わせて使うことで柔軟なバリデーションを実現できます。フォームリクエストへルールを分離すると、より読みやすく保守しやすいコードになるため、プロジェクトが大きくなるほど、その重要性を実感できるでしょう。複数フィールドの入力を整えることは、使いやすいWebサービスに欠かせない大事なポイントです。

先生と生徒の振り返り会話

生徒

「複数の項目にバリデーションをかける方法が、思っていたよりシンプルだとわかりました!」

先生

「そうですね。ルールを丁寧に書いてあげるだけで、Laravelがしっかりチェックしてくれますよ。」

生徒

「フォームリクエストに分ければコードもスッキリして見やすくなるのが嬉しいです。」

先生

「その通り。プロジェクトが大きくなると、こうした整理がとても役に立ちます。配列形式のバリデーションも覚えておくと便利ですよ。」

生徒

「今日学んだ方法で、いろんな入力フォームを安心して作れそうです!」

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

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

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

Laravelのバリデーションで、名前やメールアドレスなど複数の入力項目を一度にチェックする方法はありますか?

はい、Laravelではコントローラの「validate」メソッドを使用することで、複数のフィールドをまとめてバリデーション(入力チェック)することが可能です。例えば、ユーザー登録画面などで「氏名」「メールアドレス」「パスワード」といった複数の入力欄がある場合、配列形式でそれぞれの項目に対して「必須入力(required)」や「文字数制限(max)」などのルールを一括で定義できます。これにより、フォームから送信されたデータがすべて正しい形式であることを効率的に確認でき、開発効率が大幅に向上します。初心者の方でも、一つのメソッド内にルールを書き並べるだけで実装できるため、非常に扱いやすい機能となっています。
カテゴリの一覧へ
新着記事
New1
Symfony
Symfonyとは?PHPの堅牢なフレームワークの特徴と活用シーン
New2
Laravel
Laravelのプロジェクト構造を理解しよう!初心者向けディレクトリ解説
New3
Laravel
Laravelのモック化を完全解説!MockeryとFacadesでテストを簡単にする方法
New4
CodeIgniter
CodeIgniterバリデーションのよくある失敗例と対策!初心者向けエラーチェック完全ガイド
人気記事
No.1
Java&Spring記事人気No1
Symfony
Symfonyの抽象コントローラとは?AbstractControllerを初心者向けにやさしく解説
No.2
Java&Spring記事人気No2
PHP
PHPで定数を定義する方法!defineとconstの違いと使い分けを徹底比較
No.3
Java&Spring記事人気No3
Symfony
Symfonyでバリデーションメッセージを多言語対応する方法!初心者でもわかる国際化の基本
No.4
Java&Spring記事人気No4
Laravel
LaravelのBlade構文まとめ!@if @foreach など基本ディレクティブ解説
No.5
Java&Spring記事人気No5
Laravel
Laravelでログを出力する方法(Monolog・storage/logs)
No.6
Java&Spring記事人気No6
Laravel
Laravelのルーティングの基本構文と書き方をやさしく解説!初心者でも理解できるWebルートの仕組み
No.7
Java&Spring記事人気No7
Laravel
Laravelのインストール方法まとめ!ComposerとLaravel Installerの使い方
No.8
Java&Spring記事人気No8
Symfony
Symfonyのインストール方法!CLIとComposerの導入手順まとめ