Laravel5.2.31のプロジェクトで ResponseのwithErrors()メソッドが動作しない問題が起こり、3時間ぐらいはまったのでシェアします。

コントローラのバリデーションでいつも通り$this->validate([…])を始めたのですが、$errors変数に入っているはずのエラーメッセージが取り出せず。

Ver5.2.27の別プロジェクトで正常動作しているコードの移植だったのでなぜ??Why??となりました。3時間はハマりすぎですが、普段全く手が止まることもないような部分なので、デバッグの方法さえ忘れてしまったようです。

 
最終的にはデバッグとstackoverflowでこの記事を見つけて解決しました。10件もアンサーが付いているホットな話題だったようです。
Laravel 5.2 $errors not appearing in Blade

This is a breaking problem with the 5.2 upgrade. What’s happening is the middleware which is responsible for making that errors variable available to all your views is not being utilized because it was moved from the global middleware to the web middleware group.

 

解決方法は、Kernel.phpの$middlewareGroups[“web”]の中身をグローバルな$middlewareへ移すこと。

マイナーアップデートにも関わらず、このあたりのコードが変わってしまったようです。

修正すると$errorsがセッションから取れるようになりました。めでたしめでたし。

 

関連するカスタマイズ

API(ajax)をクロスドメイン対応にする方法... APIをクロスドメイン利用する場合、JSONP形式が主流でしたが、'Access-Control-Allow-Origin'等のヘッダーをHTTPレスポンスに含めてやることでも最近のブラウザに対応できます。 Laravelでレスポンスにヘッダーを追加する場合、引数に配列として渡すことが可能...
Eloquent/QueryBuilderによるAnd検索とOr検索の複合... Laravel5のQueryBuilderは非常に便利ですが、複雑なwhere条件を書こうとするとwhereRawに頼ってしまいがちです。 しかし可読性を保つためなるべくwhereやorWhereで書いた方が良いと思います。 単純なAnd検索であれば、 単純なOr検索であれば、 ...
メールを文字化けしないようISO-2022-JPにエンコード... Laravel5で送信するメールは初期設定でUTF-8なので、メーラーによっては日本語の文字化けが起こります。 Laravel5は多くの人が登録するECサイトやポータルサイトで使用するフレームワークですので、日本向けのサイトであればエンコーディングはISO-2022-JPに変更しておきたいとこ...
No supported encrypter found. The cipher and / or ... Laravel5をインストールしたとき、次のようなエラーが出ることがあります。 RuntimeException in EncryptionServiceProvider.php line 45: No supported encrypter found. The cipher and / or...