Laravelのedit/updateフォームでなぜか$errorsがundefinedになる
状況説明
ユーザー登録をすれば、ユーザー情報変更するのもお決まりですよね。
そのフォームを作ろうとして、入力後にはバリデーションのチェックもするので、初期入力時のフォームをそのまま転用しようとコピーしたところ、バリデーションもちゃんと聞いているはずなのに、なぜか $errors
という変数はundefined だというエラーが出続ける。
バッチリな答え見つかる
Laravel update form erros undefined
みたいな感じで検索して、StackOverflowに行き着きました。
毎度お世話になってます。
そんなに時間かからなかったので、結構ポピュラーなエラーということがわかる。
結果としては、routeで、 middleware => [ 'web' ]
を指定しろ、というものでした。
私の場合は、webview画面を作っていたため、webブラウザで作っていた登録画面とは違う、web.phpみたいなそもそもweb用ではないrouteファイルを使っていたことで、middlewareがwebと指定されていなかったようでした。
$errors
は、バリデーションをかけた時に、エラーが出たら、自動でリダイレクトしてくれて、エラー内容を取得してくれるというものなので、画面のあるwebブラウザで見ることを前提にしたもののための機能ということが改めてわかりました。
ということで、上記記載を
Route::middleware('web')->group(function () { //ここにルートを記載 }
といったようにグループにつけたところ、errorsをちゃんと取得して、表示してくれるようになりました。
viewに渡す変数なども、これを指定していないとundefinedみたいなエラーになってしまうので、今後気を付けたいと思います。