1

这是在 laravel 中验证表单请求,请求包含过滤器,过滤器中的字段名称存在句点(点)。

样品请求网址

...?filter[entity.abc][]='value'

这里 entity.abc 实际上是一个字符串,但是当为 'filter.entity.abc' 给出规则时,laravel 认为它是对象数组

filter:[
    [entity]: [ {abc:'value'}]
      ]

这实际上是

filter:[
   [entity.abc]:['value']
]

所以我们需要为第二个点制作正则表达式,相当于:

public function rules()
{
    return [
        'filter.entity\.abc' => ['bail', 'sometimes', 'array'],
        'filter.entity\.abc' => ['uuid']
    ];
}

以上总是返回 true,即使存在无效的 uuid

4

1 回答 1

0

为什么不这样修改您的请求?

...?filter[entity][abc][]='value'

编辑:

您可以在 laravel 中使用自定义验证,您可以在其中解构参数并手动检查值

Laravel 自定义验证 https://laravel.com/docs/8.x/validation

于 2021-01-06T03:10:35.597 回答