根据laravel验证文档:
required_if:otherfield,value,... 如果anotherfield字段等于任何值,则验证中的字段必须存在且不能为空。
这是我的考试:
$validator = Validator::make([
'assessment' => [
'hasConfirmation' => 0,
'expiredDate' => "12/2020"
]
],
[
'assessment.hasConfirmation' => Rule::in([0, 1, null]),
'assessment.expiredDate' => Rule::requiredIf('assessment.hasConfirmation' === 1),
]);
$validator->passes(); // always return true
我希望由于我未通过1,因此该测试将失败。但是这个测试总是可以通过
答案 0 :(得分:0)
您可以使用带有requiredIf
的闭包,该闭包返回一个布尔值以确定是否应应用“必需”规则:
$data = [
'assessment' => [
'hasConfirmation' => 0,
'expiredDate' => "12/2020"
]
];
$validator = Validator::make($data, [
'assessment.hasConfirmation' => Rule::in([0, 1, null]),
'assessment.expiredDate' => Rule::requiredIf(function () use ($data) {
return data_get($data, 'assessment.hasConfirmation') === 1;
});
]);