如何在第一个参数为数组的文件数组字段上使用 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) 时才需要此图像

例如:

我尝试使用以下规则:

$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;
 }),
]);