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

Laravelでフォームバリデーションを組み込む方法(Controller側)

Laravelでフォームバリデーションを組み込む方法(Controller側)
Laravelでフォームバリデーションを組み込む方法(Controller側)

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

生徒

「先生、Laravelでフォームの入力値をチェックする方法はありますか?」

先生

「もちろんあります。LaravelではController側で簡単にフォームバリデーションを組み込めます。」

生徒

「具体的にはどうやって書くんですか?」

先生

「それでは、実際のControllerコードを例に見ていきましょう!」

1. バリデーションとは?

1. バリデーションとは?
1. バリデーションとは?

バリデーションとは、ユーザーがフォームに入力した値が正しいかどうかをチェックする処理のことです。例えば、メールアドレス欄に文字列が入っていたり、必須入力欄が空だった場合にエラーを返すことで、不正なデータが保存されるのを防ぎます。Laravelのバリデーションを理解すると、安全で信頼性の高いアプリケーションを作ることができます。

2. Controllerでバリデーションを組み込む方法

2. Controllerでバリデーションを組み込む方法
2. Controllerでバリデーションを組み込む方法

Controllerでバリデーションを組み込む場合、Requestオブジェクトのvalidate()メソッドを使います。簡単な例として、名前とメールアドレスを入力するフォームのバリデーションは次のように書けます。


use Illuminate\Http\Request;

public function store(Request $request) {
    $validated = $request->validate([
        'name' => 'required|max:50',
        'email' => 'required|email'
    ]);

    // バリデーションを通ったデータを使って処理を行う
    // 例: データベースに保存する
}

このコードでは、nameが必須で最大50文字まで、emailが必須かつメール形式であることをチェックしています。もしバリデーションに引っかかると、自動的に前のフォームページにリダイレクトされ、エラーメッセージが表示されます。

3. バリデーションルールの種類

3. バリデーションルールの種類
3. バリデーションルールの種類

Laravelには多くの便利なバリデーションルールが用意されています。主なルールをいくつか紹介します。

  • required: 必須入力
  • email: メールアドレス形式
  • max:数値: 最大文字数または数値の上限
  • min:数値: 最小文字数または数値の下限
  • confirmed: 確認入力フィールドとの一致(例: パスワード)

これらを組み合わせることで、柔軟にフォームの入力チェックを行えます。

4. バリデーションエラー時の自動リダイレクト

4. バリデーションエラー時の自動リダイレクト
4. バリデーションエラー時の自動リダイレクト

Controllerでvalidate()を使用すると、バリデーションに失敗した場合は自動で前のページにリダイレクトされます。また、エラー内容はセッションに保存されるため、Bladeテンプレートで簡単に表示できます。


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

このように書くと、ユーザーが入力ミスした箇所が分かりやすく表示されます。

5. old()関数と組み合わせる

5. old()関数と組み合わせる
5. old()関数と組み合わせる

前回入力した値を保持するold()関数と組み合わせると、フォーム再表示時にユーザーが入力した値を復元できます。例えば、名前欄を次のように書くと、入力値が消えません。


<input type="text" name="name" value="{{ old('name') }}">

これにより、ユーザーはエラー箇所だけを修正すればよく、再入力の手間が減ります。

6. ポイントまとめ

6. ポイントまとめ
6. ポイントまとめ
  • Controller側でRequest::validate()を使うと簡単にバリデーションを組み込める
  • バリデーションルールを組み合わせることで柔軟なチェックが可能
  • バリデーション失敗時は自動でリダイレクトされ、エラーメッセージを表示できる
  • old()関数と組み合わせて入力値を保持するとユーザー体験が向上する

これらのポイントを押さえることで、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でルートをBladeテンプレートに記述する方法(route関数)
No.7
Java&Spring記事人気No7
Laravel
Laravelのルートキャッシュ機能を活用してパフォーマンス改善!初心者でもわかる完全ガイド
No.8
Java&Spring記事人気No8
Laravel
Laravelでログを出力する方法(Monolog・storage/logs)