Laravel 验证对象数组问题
Laravel validate array of objects issue
我有一个请求,我在其中传递了一个 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
部分时它工作正常,但是我需要控制我检索的内容。
您有一个对象数组,因为 json_decode
return 是一个对象。要return一个关联数组,你需要做json_decode($item, true)
。您需要这样做,因为 Laravel 验证器需要数据和验证规则都是数组。由于您传递的是对象数组,因此它不起作用。
我有一个请求,我在其中传递了一个 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
部分时它工作正常,但是我需要控制我检索的内容。
您有一个对象数组,因为 json_decode
return 是一个对象。要return一个关联数组,你需要做json_decode($item, true)
。您需要这样做,因为 Laravel 验证器需要数据和验证规则都是数组。由于您传递的是对象数组,因此它不起作用。