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