ホーム > Laravel > Laravelのバリデーションでerrorsが表示されないときの解決方法
Laravel

Laravelのバリデーションでerrorsが表示されないときの解決方法

いつもご利用ありがとうございます。
この記事には広告が掲載されており、その広告費によって運営しています。

⇨ Laravel 記事の目次はこちら

この記事では、

Laravelのバリデーションの$errors が view に表示されない

という問題を解決する記事になります。

前回の記事|Laravel のフォームリクエストでバリデーションする方法

環境

MacOS

Laravel6

解決方法

errors 用の Middleware を通していない可能性があります。

App/Http/Kernel.php

ここに、使う Middleware を指定するのですが、

\Illuminate\View\Middleware\ShareErrorsFromSession::class,

このクラスが入っていないと errors は表示されません。

初期状態の「web」と言う名前の MiddlewareGroup にはこのクラスが付与されていることが分かります。

App/Http/Kernel.php

        'web' => [
            \App\Http\Middleware\EncryptCookies::class,
            \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,
            \Illuminate\Session\Middleware\StartSession::class,
            // \Illuminate\Session\Middleware\AuthenticateSession::class,
            \Illuminate\View\Middleware\ShareErrorsFromSession::class,
            \App\Http\Middleware\VerifyCsrfToken::class,
            \Illuminate\Routing\Middleware\SubstituteBindings::class,
        ]

このクラスが何らかの事情で(MiddlewareGroup を自作したとか)付けていないと errors が表示されません。

サンプルコード

バリデーションが表示されない原因はたくさんあるとは思いますが、そのうちの一つの事例をあげてみましたが、基本的なバリデーションの書き方で間違っているかどうか?については、下記の記事を参考にしてみてください。

⇨【初心者向け】Laravel で一番簡単なバリデーションをする

⇨【初心者向け】Laravel のフォームリクエストでバリデーションする

まとめ

今回は、Laravel のバリデーションで正しく書いてるはずなのに、なぜか errors が表示されない時の対処法について書いてみました。

フレームワークは便利な分、初期設定で色々やってくれているので一度線路から降りると修正するのが大変ですね!

記事の内容についての苦情やミスの指摘は、Twitter の DM にお願いします。

良く読まれている記事「Laravel6 Auth のメールアドレスの認証を実装してみる(VerifyEmail)」