我有一个请求,我在其中传递了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
部分时,它可以很好地工作,但是我需要控制要检索的内容。
答案 0 :(得分:2)
您有一个对象数组,因为json_decode
返回一个对象。为了使其返回关联数组,您需要执行json_decode($item, true)
。您需要这样做,因为Laravel验证器需要数据和验证规则都为数组。由于您要传递对象数组,因此无法正常工作。