以下のように 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;
}
}