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

问题描述 投票:0回答:1

我有一个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.*验证器,并且再次提出没有错误。

也许有人有解决方案吗?或者我可能做错了什么? :)

谢谢 !

php laravel laravel-validation
1个回答
0
投票

如果要为required_if规则构造更复杂的条件,可以使用Rule :: requiredIf方法。此方法接受布尔值或闭包。传递Closure时,Closure应返回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;
 }),
]);
© www.soinside.com 2019 - 2024. All rights reserved.