[英]Laravel Validation: required_if condition always passing
根據 laravel 驗證文檔:
required_if:anotherfield,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,所以這個測試應該失敗。 但是這個測試總是通過
您可以使用requiredIf
的閉包返回 boolean 來確定是否應應用“必需”規則:
$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;
});
]);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.