跳过数组验证规则的第一个索引?

时间:2018-12-21 08:22:58

标签: laravel validation laravel-5

晚上好, 我正在尝试应用验证规则时跳过数组的第一个索引,这是我到目前为止所尝试的

$validatedData = Validator::make($request->all(),([
            'inventories.0'      => 'bail',
            'inventories'        => 'required|array|filled',
            'quantities.0'       => 'bail',
            'quantities.*'       => 'required|array|filled',
            'required.0'         => 'bail',
            'required.*'         => 'required|array|filled',
        ]));

但是它不起作用,有什么想法吗? 我正在尝试添加多个动态字段,但想跳过它的第一个索引。 请查看下面给出的图片,以清楚地了解问题所在。

enter image description here

3 个答案:

答案 0 :(得分:3)

尝试一下:

$validatedData = Validator::make($request->except(['inventories[0],quantities[0],required[0]']),([
    'inventories.*'        => 'required|array|filled',
    'quantities.*'       => 'required|array|filled',
    'required.*'         => 'required|array|filled',
]));

答案 1 :(得分:1)

保释金不用于跳过条目。但是它可以用于跳过验证逻辑。 例如

'phone' => 'bail|numeric|unique:users'

在这种情况下,如果输入的电话号码不是数字,则不会检查第三个验证(即电话号码在“用户”表中是否唯一)。

对于您的情况,不应使用“ $ request-> all()”。您应该使用“ request()-> except(['inventories [0],数量[0],必选[0]'])”

答案 2 :(得分:1)

这也许不是最佳实践。您试图让表示层对应用程序的数据/逻辑层产生直接影响。最好只发送您要验证的数据,而不是发送所有内容,因为它们试图获取您的验证(和其他逻辑)而忽略第一个数组元素,因此会更好。

您要提交的是api调用还是标准的网络表单?如果是api调用,在进行调用之前,您是否不能仅建立要发送的行的数据?

这将使您的逻辑层更加整洁,并允许您更轻松地更改ui,而不会影响逻辑,并且紧密耦合。

只是一个建议。