如何在带有第一个参数数组的文件数组字段上使用required_if?

时间:2019-04-09 14:51:23

标签: php laravel laravel-validation

我有一个带有image_file(image_file[1]image_file[2])数组的数组。它们是类型文件的输入。 仅当在2上定义了另一个字段数组(proposition_type)时,才需要此图像。

例如:

  • 如果proposition_type[1] == 2image_file[1]必须填写;
  • 如果 proposition_type[2] == 1image_file[2]不必填写。

我尝试使用以下规则:

$rules = [
    (...)
    'image_file.*' => 'required_if:proposition_type.*,2|image',
];

但是出现image_file字段上的任何错误。

此外,我在required上使用了image_file.*验证程序,在这里再次没有出现错误。

也许有人对此有解决方案?还是我做错了什么? :)

谢谢!

1 个答案:

答案 0 :(得分:0)

如果您想为required_if规则构造一个更复杂的条件,则可以使用Rule :: requiredIf方法。此方法接受布尔值或闭包。通过闭包时,闭包应返回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;
 }),
]);