如何在第一个参数为数组的文件数组字段上使用 required_if?
How to use required_if on file array fields with an array for first argument?
我有一个 image_file 数组(image_file[1]
,image_file[2]
)。它们是类型文件的输入。
仅当在 2.
上定义了另一个字段数组 (proposition_type) 时才需要此图像
例如:
- 如果
proposition_type[1] == 2
,image_file[1]
必须填写;
- 如果
proposition_type[2] == 1
,image_file[2]
不用填写
我尝试使用以下规则:
$rules = [
(...)
'image_file.*' => 'required_if:proposition_type.*,2|image',
];
但是 image_file 字段上的任何错误都会被引发。
此外,我在我的 image_file.*
上使用了 required
验证器,同样,没有出现错误。
也许有人对此有解决方案?或者也许我做错了什么? :)
谢谢!
如果您想为 required_if 规则构造更复杂的条件,您可以使用 Rule::requiredIf 方法。此方法接受布尔值或闭包。当传递闭包时,闭包应该 return true 或 false 以指示是否需要验证字段。这样的东西可能对你有用:
Validator::make($request->all(), [
'image_file[1]' => Rule::requiredIf(function () use ($request) {
if($request->proposition_type[1] == 2)
return true;
else
return false;
}),
'image_file[2]' => Rule::requiredIf(function () use ($request) {
if($request->proposition_type[2] == 1)
return false;
else
return true;
}),
]);
我有一个 image_file 数组(image_file[1]
,image_file[2]
)。它们是类型文件的输入。
仅当在 2.
例如:
- 如果
proposition_type[1] == 2
,image_file[1]
必须填写; - 如果
proposition_type[2] == 1
,image_file[2]
不用填写
我尝试使用以下规则:
$rules = [
(...)
'image_file.*' => 'required_if:proposition_type.*,2|image',
];
但是 image_file 字段上的任何错误都会被引发。
此外,我在我的 image_file.*
上使用了 required
验证器,同样,没有出现错误。
也许有人对此有解决方案?或者也许我做错了什么? :)
谢谢!
如果您想为 required_if 规则构造更复杂的条件,您可以使用 Rule::requiredIf 方法。此方法接受布尔值或闭包。当传递闭包时,闭包应该 return true 或 false 以指示是否需要验证字段。这样的东西可能对你有用:
Validator::make($request->all(), [
'image_file[1]' => Rule::requiredIf(function () use ($request) {
if($request->proposition_type[1] == 2)
return true;
else
return false;
}),
'image_file[2]' => Rule::requiredIf(function () use ($request) {
if($request->proposition_type[2] == 1)
return false;
else
return true;
}),
]);