Laravel 9でrequestファイルでオリジナルメッセージを返す方法

こんにちは!トビログ管理人のとびうおです!今回は「Laravel 9でrequestファイルでオリジナルメッセージを返す方法」について解説して行きたいと思います。

この記事は以下の記事をまず読んでから読むことを推奨します。

Laravel9でバリデーションを実装する
今回はLaravel 9にてバリデーションを簡単に実装する方法を紹介したいと思います。フォームリクエストを作るLaravelでバリデーションを実装する1番簡単な方法は「フォームリクエストを作成する」ことです。フォームリクエ...

requestファイルでmessages()を定義する

Laravel9ではrequestファイルでmessages()関数を定義するだけで、バリデーションを通さなかった時のmessagesを返すことができます。

以下のようなrequestファイルにmessagesを追加していきましょう。

laravel 9にてrequestファイルでオリジナルメッセージを返す方法
laravel 9にてrequestファイルでオリジナルメッセージを返す方法

ここに以下のような形でmessages()関数を記述します。(※画像の下にコードをテキストで掲載しています)

laravel 9にてrequestファイルでオリジナルメッセージを返す方法
laravel 9にてrequestファイルでオリジナルメッセージを返す方法
 /**
     * カスタムメッセージを返す
     *
     * @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の部分.バリデーションの内容' => 'メッセージ内容',
        ];
    }
とびうお<br>
とびうお

この際、ruleで使った引数(「:」の後)は記述する必要はありません

まとめ

requestファイルにてバリデーションエラーが発生した際にカスタマイズしたメッセージを書く方法はrequestファイルにmessage()関数を書くということです!

とびうお<br>
とびうお

小さな工夫ですが、なぜリクエストが通らないかを示すことは、ユーザーのストレス軽減につながります。是非つけておきたい機能です。

参考サイト

バリデーション 9.x Laravel

その他のLaravelの記事

とびうお<br>
とびうお

当ブログではLaravelの様々な機能を紹介しています。他の記事も是非ご覧ください。
また、「こんな記事が欲しい!」というリクエストがあればコメントもよろしくお願いします!

Laravel
「Laravel」の記事一覧です。
とびうお
ブログ管理人です!本人が書く記事は少なめ。。ごめんなさい))。

コメント

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