Laravelのバリデーションでerrorsが表示されないときの解決方法
いつもご利用ありがとうございます。
この記事には広告が掲載されており、その広告費によって運営しています。
この記事では、
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 にお願いします。