0

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

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

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

在此处输入图像描述

4

3 回答 3

3

试试这个:

$validatedData = Validator::make($request->except(['inventories[0],quantities[0],required[0]']),([
    'inventories.*'        => 'required|array|filled',
    'quantities.*'       => 'required|array|filled',
    'required.*'         => 'required|array|filled',
]));
于 2018-12-21T08:32:46.453 回答
1

Bail 不用于跳过条目。但它可以用于跳过验证逻辑。例如,

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

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

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

于 2018-12-21T08:41:38.777 回答
1

这也许不是最佳做法。您试图让表示层直接影响应用程序的数据/逻辑层。最好只发送您想要验证的数据,而不是发送所有内容,并且它们会捆绑让您的验证(和其他逻辑)忽略第一个数组元素。

您提交的是 api 调用还是标准 Web 表单?如果是 api 调用,在调用之前,您能否仅构建您想要发送的行的数据?

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

只是一个建议。

于 2018-12-21T08:44:24.613 回答