Laravel バリデーションエラーメッセージ自由自在

※日本語化はしてある前提で書きます。

例えば、リクエストクラスに↓こんなバリデーションルールがあった場合

public function rules()
{
    return [
        'start_date' => 'required|date',
    ];
}

未入力でPOSTした場合、エラーメッセージは
“start dateは必ず指定してください。”
となる。

resources\lang\ja\validation.php
    'attributes' => [
        'start_date' => '開始日',     ⇐ 追加
    ],

attributesに追加すると
開始日は必ず指定してください。”
となる。

resources\lang\ja\validation.php
    'custom' => [
        'start_date' => [               ⇐ 追加
            'required' => ':attributeは必須です',  ⇐ 追加
        ],
    ],

customに追加すると
“開始日は必須です
となる。

resources\lang\ja\validation.phpに記述することで
どのページ(リクエスト)でも有効な共通設定となるが
リクエストごとにメッセージ内容を変えたい時は

app\Http\Requests\xxxxRequest.php
    public function attributes()
    {
        return [
            'start_date' => '初日',
        ];
    }

    public function messages()
    {
        return [
            'start_date.required' => ':attributeは必須入力です',
        ];
    }

とすることで
初日は必須入力です
となる。

validation.phpとリクエストクラス両方に記述した場合は、リクエストクラスの方が優先される。
つまり、validation.phpよりリクエストクラスに記述されたエラーメッセージの方が強いので
サイト内で共通なものはvalidation.phpに記述して、個別なものは各リクエストクラスに記述するのが良いと思う。

返信を残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です