こんにちは!トビログ管理人のとびうおです!今回は「Laravel 8でrequestファイルでオリジナルメッセージを返す方法」について解説して行きたいと思います。
この記事は以下の記事をまず読んでから読むことを推奨します。
requestファイルでmessages()を定義する
Laravel8ではrequestファイルでmessages()関数を定義するだけで、バリデーションを通さなかった時のmessagesを返すことができます。
以下のようなrequestファイルにmessagesを追加していきましょう。
ここに以下のような形でmessages()関数を記述します。(※画像の下にコードをテキストで掲載しています)
/**
* カスタムメッセージを返す
*
* @return array
*/
public function messages()
{
return [
'title.required' => 'タイトルは必須です',
'title.unique' => 'タイトルは他のタイトルとかぶってはいけません',
'title.max' => 'タイトルの文字数は255文字いかにしてください',
'body.required' => '内容は必須です',
];
}
bladeに以下の記述を追加
ただ、これだけだとリダイレクトするところで表示する処理までは書いていません。そのため、実際にその表示をするためにはbladeに$errorsの処理を書いていく必要があります。
@foreach($errors->all() as $message)
<p>{{$message}}</p>
@endforeach
このような処理を追加すれば、titleをnullで送った際に「タイトルは必須です」というエラー文が表示されるようになります。
messages()関数の解説
messages()関数はreturnの中の配列に以下のような形で指定してエラーの際のメッセージを書くことができます。
public function messages()
{
return [
'rulesで書いたnameの部分.バリデーションの内容' => 'メッセージ内容',
];
}
この際、ruleで使った引数(「:」の後)は記述する必要はありません
まとめ
requestファイルにてバリデーションエラーが発生した際にカスタマイズしたメッセージを書く方法はrequestファイルにmessage()関数を書くということです!
小さな工夫ですが、なぜリクエストが通らないかを示すことは、ユーザーのストレス軽減につながります。是非つけておきたい機能です。
参考サイト
その他のLaravelの記事
当ブログではLaravelの様々な機能を紹介しています。他の記事も是非ご覧ください。
また、「こんな記事が欲しい!」というリクエストがあればコメントもよろしくお願いします!
コメント