カテゴリ: 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でAPI用のコントローラを作成する方法(APIリソース)を初心者向けに解説
New2
Laravel
LaravelでルートをBladeテンプレートに記述する方法(route関数)
New3
Symfony
Symfonyのセッション管理完全ガイド|セッションに値を保存・取得・削除する方法を初心者向けに解説
New4
Symfony
Symfonyで最初のページを表示してみよう!初心者でもできるHello World入門
人気記事
No.1
Java&Spring記事人気No1
Laravel
Laravelでモデルからデータを取得・保存・更新・削除する方法を完全ガイド!初心者でもわかるEloquent ORM入門
No.2
Java&Spring記事人気No2
Laravel
LaravelでBasic認証を実装するミドルウェアの使い方!初心者向けガイド
No.3
Java&Spring記事人気No3
Laravel
Laravelでログを出力する方法(Monolog・storage/logs)
No.4
Java&Spring記事人気No4
Laravel
LaravelでファクトリとSeederを組み合わせてダミーデータを生成する方法!初心者でも簡単にテストデータ作成
No.5
Java&Spring記事人気No5
Symfony
SymfonyでTwigテンプレートを表示する方法を完全ガイド!初心者にもわかるHTMLとの違いや使い方
No.6
Java&Spring記事人気No6
Symfony
Symfonyのコントローラでリダイレクトする方法を徹底解説!初心者にもやさしく解説
No.7
Java&Spring記事人気No7
Laravel
Laravelのデータベース設定方法を完全ガイド!初心者でもわかる.envファイルの使い方
No.8
Java&Spring記事人気No8
Laravel
Laravelのルート一覧を確認する方法!初心者でもわかるphp artisan route:listの使い方