状況
Laravel10のテストをしていた際、バリデーションエラーが以下の内容になってしまい、エラーメッセージが出ない状況でした。
求めていたメッセージ:{“message”:”The title field is required.”,”errors”:{“title”:[“The title field is required.”]}}
実際のメッセージ:{“message”:”validation.required”,”errors”:{“title”:[“validation.required”]}}
解決策
Laravelの組み込み検証ルールには、それぞれエラーメッセージがあり、アプリケーションの
Laravel公式lang/en/validation.php
ファイル内に用意しています。アプリケーションにlang
ディレクトリがない場合は、lang:publish
Artisanコマンドにより、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',
コメント