Laravel验证对象数组问题

时间:2018-09-03 21:04:37

标签: php json laravel validation dingo-api

我有一个请求,我在其中传递了JSON对象数组。它具有以下结构

[ {path: 'string', class: 'string'} ]

据我了解,没有简单的方法可以检查此数组,因此我已经尝试过

$validatedData = $request->validated();

        $result = ['data' => []];
        foreach ($validatedData['items'] as $item) {
            $result['data'][] = json_decode($item);
        }

        Validator::make($result, [
            'data.*.path' => 'required|url',
            'data.*.class' => 'required|string'
        ])->validate();

无论如何会导致

array(1) {
  ["data"]=>
  array(2) {
    [0]=>
    object(stdClass)#813 (2) {
      ["link"]=>
      NULL
      ["class"]=>
      NULL
    }
    [1]=>
    object(stdClass)#814 (2) {
      ["link"]=>
      NULL
      ["class"]=>
      NULL
    }
  }
}

验证器以某种方式切断数据。当我尝试不使用Validator::make部分时,它可以很好地工作,但是我需要控制要检索的内容。

1 个答案:

答案 0 :(得分:2)

您有一个对象数组,因为json_decode返回一个对象。为了使其返回关联数组,您需要执行json_decode($item, true)。您需要这样做,因为Laravel验证器需要数据和验证规则都为数组。由于您要传递对象数组,因此无法正常工作。