Laravel10でバリデーションエラーが{“message”:”validation.required”,”errors”:{“title”:[“validation.required”]}}の場合

状況

Laravel10のテストをしていた際、バリデーションエラーが以下の内容になってしまい、エラーメッセージが出ない状況でした。

求めていたメッセージ:{“message”:”The title field is required.”,”errors”:{“title”:[“The title field is required.”]}}

実際のメッセージ:{“message”:”validation.required”,”errors”:{“title”:[“validation.required”]}}

解決策

Laravelの組み込み検証ルールには、それぞれエラーメッセージがあり、アプリケーションのlang/en/validation.phpファイル内に用意しています。アプリケーションにlangディレクトリがない場合は、lang:publish Artisanコマンドにより、Laravelへ作成を指示してください。

Laravel公式

公式に上記の記載があったので、以下コマンドでファイルを作成しました。

$ sail php artisan lang:publish

これでプロジェクト直下にlang/enフォルダが作成され、その中にvalidation.phpが入っています。

※私はLaravel sailを使用していて、①の設定をした短縮コマンドを使用しているので、この設定をしていない方は②のコマンドを試してみてください。

Laravel sailを使用していない方は③のコマンドで実行できると思います(検証はしていません)。

$ alias sail='[ -f sail ] && bash sail || bash vendor/bin/sail'

$ ./vendor/bin/sail php artisan lang:publish

$ php artisan lang:publish

私の環境では一度config/app.phpの以下の部分をjaにしていたので、変更してからtestコマンドを打つと求めていたメッセージが表示されるようになりました。

'locale' => 'en',

コメント

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