Laravel9 エラーメッセージが表示できずエラーになる時の原因と対策 htmlspecialchars(): Argument #1 ($string) must be of type string, array given

Laravel Breeze

Laravel9.41.0では、、バリデーションエラー表示用のcomponents/auth-varidation-errors.blade.phpファイルがなくなり、代わりにinput-error.blade.phpファイルがついてきます。

今までのどおりの形でエラーを表示しようとすると、ビューからcomponentsに渡すパラメータの形が間違っているためにエラーになります。

具体的には、下記のようなエラーメッセージが出る可能性があります。

htmlspecialchars(): Argument #1 ($string) must be of type string, array given
Junko
Junko

どうすればよいのか、対策と、そもそもの原因をお伝えしますね。

Laravel9 エラーメッセージを出そうとするとエラーになる時の対策

これまでのエラーメッセージ表示方法

resources/views/components/auth-varidation-errors.blade.phpファイルを使って、下記のように、バリデーションエラーを表示することができました。

現在のエラーメッセージ表示方法

現在は、resources/views/components/input-error.blade.phpファイルを使って、バリデーションエラーを表示します。

エラーメッセージをすべて表示するなら、下記コードを、ビューファイル(blade.php)のエラーを表示したい箇所にいれます。

Laravel9 エラーメッセージを出そうとするとエラーになる原因

なぜauth-validation-errors では、$errors を渡していたのに、input-error には、$errors->all() のように、エラーメッセージだけ渡すのかを説明しますね。

変更前のauth-varidation-errors.blade.phpファイルには、下記のように $errors->all() のコードが入っており、ここでエラーを取り出してくれていました。

そのため、オブジェクトのまま受け渡せばOKでした。

【auth-varidation-errors.blade.php】

ですが変更後のinput-error.blade.phpファイルには、$errorsから値を取り出してくれる部分がなくなりました。

【input-error.blade.php】

そのため、componentsに受け渡す前に、ビュー側で $errors->all() を行い、値を取り出す必要がでてきたのです。

さいごに

今回の変更により、components部分のコードはスッキリしたように思います。

なおLaravelは、こんなふうに、ある日突然さくっと変更されていたりします。

がんばって、Laravelの後をついていきましょう^^

なお、わたしは【Laravelの教科書】という学習サイトを運営しており、変更点があったときには、受講生の方から、教えてもらえたりします。

今回の変更も、受講生さんたちの連絡で知りました。おかげで 学習サイトは、今のLaravelに適応した内容になっています。

最新のLaravelをいちから学びたいと思ったら、【Laravelの教科書】を活用してくださいね。

Junko
Junko

詳細は、下記ボタンをクリックしてください。基礎編は無料です♪

Laravelの教科書について詳しく知る

【Laravelの教科書を通じて作成する画面】

Laravel Breeze Laravelバージョンアップ・ニュース

【Laravelの教科書・プレゼント】

Junko
Laravelの使い方を覚えたい!と思ったら、ぜひ、役立ててほしいです。 基礎編は無料でプレゼント中です♪
ひつじプログラマ
会員制サイトをいちから作っていくよ。ボタンをクリックして詳細を見てね。
Laravelの教科書の詳細を見る

Laravel8版と、最新のLaravel9版、ふたつのテキストご用意してます♪

【無料プレゼント】

「LaravelでWebアプリをいちから作れるようになりたい!」

そんなLaravel初心者のあなたへ【Laravelの教科書】基礎編プレゼント中! 会員制フォーラムサイトを学習しながら作れます。

詳細はこちらをクリック

Laravel8版と、最新のLaravel9版、ふたつのテキストご用意してます♪

社内にWebアプリ開発経験がなくて、困ってませんか?

「自社でWebアプリ開発を始めていきたい」
という企業様のために、Laravelセミナー・プログラミング教育を実施しています。

【セミナー使用スライド】

詳細はこちらご覧ください

Twitter始めました。
40代からプログラミング!

コメント

タイトルとURLをコピーしました