BadMethodCallException:方法Illuminate\Validation\Validator::



我目前正在为一家汽车经销商、小型学校项目开发API。

在CarController中,我正在处理添加汽车的POST请求,并且在数据验证方面遇到了一些问题。

这是我将收到的数据样本:

{
  "model": "Q5",
  "brand": "Audi",
  "year": 2008,
  "price": 44000,
  "color": "blue",
  "traction": "4x4",
  "motor": {
    "type": "gasoline",
    "hp": 256,
    "turbo": false,
    "cylinders": 4,
    "motor_liters": 2.0
  },
  "user_id": 1
}

考虑到格式,我写了这样的验证:

$request->validate([
            'model' => 'required|string',
            'brand' => 'required|string',
            'year' => 'required|integer',
            'price' => 'required|numeric',
            'color' => 'required|string',
            'traction' => 'required|string',
            'motor' => [
                'type' => 'required|string',
                'hp' => 'required|integer',
                'turbo' => 'required|boolean',
                'cylinders' => 'required|integer',
                'motor_liters' => 'required|numeric'
            ],
            'user_id' => 'required|integer'
        ]);

然而,当提出请求时,它会从验证器中给我以下错误:

BadMethodCallException: Method IlluminateValidationValidator::validateRequired|string does not exist.

在这一点上,我不知道这是打字错误、格式错误,还是我必须以不同的方式处理嵌套的JSON,因为我有一个UserController,它的POST请求看起来像这样:

$request->validate([
            'username' => 'required|string|min:5',
            'password' => 'required|string'
        ]);

而且效果非常好。

如果你想自己尝试API,这里有回购的链接。

要验证嵌套字段,必须使用点表示法,而不是嵌套数组:

$request->validate([
            'model' => 'required|string',
            'brand' => 'required|string',
            'year' => 'required|integer',
            'price' => 'required|numeric',
            'color' => 'required|string',
            'traction' => 'required|string',
            'motor.type' => 'required|string',
            'motor.hp' => 'required|integer',
            'motor.turbo' => 'required|boolean',
            'motor.cylinders' => 'required|integer',
            'motor.motor_liters' => 'required|numeric',
            'user_id' => 'required|integer'
        ]);

相关内容

  • 没有找到相关文章

最新更新