【问题标题】:Laravel validation of an JSON/array of integers is not workingJSON/整数数组的 Laravel 验证不起作用
【发布时间】:2023-04-11 00:48:01
【问题描述】:

我正在尝试验证我通过 API 请求发送但未成功验证的 JSON 对象(特别是整数数组)。

请求的主体有一个形式的变量:

key value
id [1,2, "hello"]

我做的验证如下:

$validation = Validator::make($request->all(),[
    'id' => 'bail|required|json',
    'id.*' => 'bail|integer|exists:products,id',
]);
if($validation->fails()){
    return response()->json([
        'status' => 'fail',
        'message'=> $validation->messages()->first()
    ],422);
}

但它仍然通过了验证。 显然“id.*”的验证没有处理它,但我不明白为什么。

有人可以帮帮我吗?

非常感谢您。

【问题讨论】:

  • 你为什么将它作为 json 文本发送?如果你仍然需要它,你需要做一个自定义验证laravel.com/docs/8.x/validation#using-closures
  • 似乎id.* 验证模式用于验证对象/关联数组的数组。
  • @N69S 我真的不需要将它作为 JSON 对象发送。我只需要将其作为数组发送,但如果我将其作为数组进行验证,则验证规则不会通过。它返回一条消息“ID 必须是一个数组”。这就是我将其验证为 JSON 对象的原因。这有什么问题吗?
  • 它不是一个“json 对象”,它只是一个代表 json 对象的字符串。有细微差别。添加到您的问题中,您是如何发送这些数据的。

标签: laravel api validation


【解决方案1】:

请加'.'像下面 'ID。*。' => 'bail|integer|exists:products,id',

【讨论】:

  • 感谢您的评论,但它不起作用。它仍然通过验证。
猜你喜欢
  • 1970-01-01
  • 2019-01-24
  • 2017-10-08
  • 2019-10-16
  • 2020-09-30
  • 2018-07-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多