【问题标题】:How do I validate an array of JSON objects in a json object?如何验证 json 对象中的 JSON 对象数组?
【发布时间】:2021-05-18 00:34:36
【问题描述】:

我正在发送一个 JSON 对象数组,我将这些对象与其他数据一起发布到数据库:

{
   "emotions":[
      {
         "id":1,
         "intensity":67,
         "new_intensity":67
      },
      {
         "id":2,
         "intensity":67,
         "new_intensity":67
      },
      {
         "id":3,
         "intensity":64,
         "new_intensity":64
      },
      {
         "id":4,
         "intensity":64,
         "new_intensity":64
      },
      {
         "id":5,
         "intensity":64,
         "new_intensity":64
      }
   ],
   "situation":"An event",
   
}

我想要做的是验证situationemotions[{},{}] json 数组:

控制器

public function store(Request $request)
{
   $this->validate($request, [
      'situation' => 'required',
   ]); 
   $data = ['data' => $request->input('emotions')];
   $this->validate($data, [
      'data.*.id' => 'digits:2|between:1,70',
      'data.*.intensity' => 'digits:3|between:1,100',
      'data.*.new_intensity' => 'digits:3|between:1,100'
   ]);
}

错误

传递给 App\Http\Controllers\Controller::validate() 的参数 1 必须是 Illuminate\Http\Request 的实例,给定数组

我希望能够结合这两种验证方法,但我也不知道如何做到这一点?

Here is the answer I got my first try from

【问题讨论】:

    标签: json laravel validation


    【解决方案1】:

    您可以使用array validators。下面的代码可能会帮助您实现这一目标

    $validator = Validator::make($data, [
          'data.*.id' => 'digits:2|between:1,70',
          'data.*.intensity' => 'digits:3|between:1,100',
          'data.*.new_intensity' => 'digits:3|between:1,100'
       ])
    

    您可以检查它是否失败并执行您想要的操作

    if($validator->fails()){
        // Do something
    }
    

    【讨论】:

      猜你喜欢
      • 2015-10-24
      • 2018-02-23
      • 1970-01-01
      • 2011-07-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-31
      • 1970-01-01
      相关资源
      最近更新 更多