问题
你想在某种条件之下才触发某个验证规则。
解决方案
使用 sometimes()
方法,比如:
$validator = validator($data,
[
'subject' => 'required_if:type,file'
]
);
$validator->sometimes('subject', 'min:10', function($data){
return $data->type == 'file';
});
上面的例子中,validator 只会在 type 为 file 的情况下执行 min:10
的验证规则。当然,在 sometimes()
方法中,你是可以在第一和第二个参数通过数组传入多个验证字段和验证规则:
$validator->sometimes(['name', 'email'], 'required', function($data){
return $data->age < 16;
});
或者这样:
$validator->sometimes(['teacher_email', 'parent_email'], 'required|email', function($data){
return $data->age < 16;
});