FormRequest のバリデーションメッセージの :value に任意のメッセージを使う

以下のように rules で required_if などを使いバリデーションを行った場合

    public function rules()
    {
        return [
            'type' => 'required|in:pet,doll',
            'age' => 'required_if:type:pet|nullable|integer|between:0,200',
        ];
    }

エラーメッセージが以下のようになってしまいます。

タイプがpetの場合、年齢も指定してください。

これを、選択した内容によって、以下のように日本語のメッセージが表示されるようにしたい時。

タイプがペットの場合、年齢も指定してください。

getValidatorInstance で設定することで value に任意のメッセージを表示することが可能です。

ExampleRequest.php

class ExampleRequest extends FormRequest
{
    public function rules()
    {
        return [
            'type' => 'required|in:pet,doll',
            'age' => 'required_if:type:pet|nullable|integer|between:0,200',
        ];
    }

    public function messages()
    {
        return [
            'type' => 'タイプ',
            'age' => '年齢',
        ];
    }

    protected function getValidatorInstance()
    {
        $validator = parent::getValidatorInstance();

        $validator->setValueNames([
            'type' => [
                'pet' => 'ペット',
                'doll' => '人形',
            ],
        ]);

        return $validator;
    }
}