Laravel验证字段名称中带有句点(句点)的请求筛选器字段



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

样本请求url

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

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

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

实际上是

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

因此,我们需要为第二个点生成regex,相当于:

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

即使存在无效的uuid,也会返回true

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

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

编辑:

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

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

最新更新