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

LaravelでフォームバリデーションエラーをBladeに表示する方法

LaravelでフォームバリデーションエラーをBladeに表示する方法
LaravelでフォームバリデーションエラーをBladeに表示する方法

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

生徒

「先生、Laravelでフォームの入力チェックに失敗した場合、エラーを画面に表示する方法はありますか?」

先生

「はい、あります。LaravelではControllerでバリデーションを行った後、Bladeテンプレートにエラーメッセージを簡単に表示できます。」

生徒

「具体的にはどのように書くんですか?」

先生

「それでは、ステップごとに見ていきましょう!」

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

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

バリデーションエラーとは、フォームの入力がルールに沿っていない場合に発生するエラーです。例えば、名前の入力が必須なのに空欄だったり、メールアドレス欄にメール形式ではない文字列が入っていた場合です。これを画面上でユーザーに知らせることで、正しい情報を入力してもらいやすくなります。

2. Controller側でのバリデーション

2. Controller側でのバリデーション
2. Controller側でのバリデーション

まず、Controllerでバリデーションを行います。Laravelでは$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. Bladeでエラーメッセージを表示する方法

3. Bladeでエラーメッセージを表示する方法
3. Bladeでエラーメッセージを表示する方法

Controllerでバリデーションが失敗した場合、エラー情報は$errorsという変数に自動的に格納されます。Bladeでは$errors->any()でエラーがあるか確認し、$errors->all()で全てのエラーメッセージを取得して表示できます。


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

このコードをフォームの上部に配置すると、ユーザーが入力ミスした内容を分かりやすく表示できます。

4. 特定の入力欄に紐づけてエラーを表示する

4. 特定の入力欄に紐づけてエラーを表示する
4. 特定の入力欄に紐づけてエラーを表示する

全体のエラーだけでなく、特定のフォーム項目ごとにエラーメッセージを表示することもできます。例えば、名前入力欄にエラーがある場合は次のように書きます。


<input type="text" name="name" value="{{ old('name') }}">
@error('name')
    <div class="text-danger">{{ $message }}</div>
@enderror

@error('name')から@enderrorの間に書いた内容は、そのフィールドにエラーがある場合のみ表示されます。{{ $message }}には自動的に該当のエラーメッセージが入ります。

5. old()関数と組み合わせて入力値を保持する

5. old()関数と組み合わせて入力値を保持する
5. old()関数と組み合わせて入力値を保持する

フォームを再表示する際にユーザーが入力した値を保持するには、old()関数を使います。これにより、入力ミスがあってもユーザーは再入力の手間を省けます。


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

エラーがあった場合も、前回入力した値を自動で復元して表示することができるので、ユーザー体験が向上します。

6. 便利なポイント

6. 便利なポイント
6. 便利なポイント
  • Controller側でvalidate()を使うと簡単にバリデーションが可能
  • Bladeでは$errors@errorを使ってエラー表示ができる
  • old()関数で再入力の手間を軽減できる
  • Bootstrapのalertクラスなどを組み合わせると、エラー表示を視覚的に分かりやすくできる

これらを活用することで、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
Laravel
LaravelのBlade構文まとめ!@if @foreach など基本ディレクティブ解説
No.4
Java&Spring記事人気No4
Symfony
Symfonyの依存性注入(DI)とは?コンストラクタでの注入方法を初心者向けに徹底解説
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
Symfony
Symfonyとは?PHPの堅牢なフレームワークの特徴と活用シーン