gpt4 book ai didi

arrays - Laravel 验证对象 JSON 数组

转载 作者:行者123 更新时间:2023-12-04 16:38:28 24 4
gpt4 key购买 nike

我的 Laravel 5.5 API 上有一个 POST 端点,我使用 postman 来测试我的路线,这就是问题所在。
我想发送一个相同类型对象的数组,如下所示:

[
{
"name":"test",
"tag":"TEST"
},
{
"name":"test2",
"tag":"TEST_2"
}
]
但我无法正确验证它。
在我的 Controller 中,我有这个:
$validator = Validator::make($requests->all(), [

'name' => 'required|string',
'tag' => 'required|string'
]);

if($validator->fails())
//Warn user for errors
我也试过简单的
$this->validate($requests->all() .... )
我尝试用 '.name' 重命名规则和 '*.name'但没有成功。
我尝试更换 $request->all()$request->input()但没有成功。
我也试图循环它,但我得到了异常(exception)
foreach($request as $req){

$validator = Validator::make($req ....)

//rest of the code
}
另一方面,我可以检索这样的数据 $datas = $request->all()并存储它们,但没有验证。
似乎有效的唯一解决方案是命名我的数组:
{
"data" : [
{
"name":"test",
"tag":"TEST"
},
{
"name":"test2",
"tag":"TEST_2"
}
]
}
然后用 'data.*.name' 命名规则但这迫使 API 用户解析数组。
假设我有一个数组 $array我想存储,我需要做
$arrayParsed = ['data' => $array]
并使用 $arrayParsed 调用 API ,我认为这有点多余。
有没有更好的方法来处理这个问题?

最佳答案

您可以尝试通过首先执行以下操作来规避该问题:

$data = [ 'data' => $requests->all() ];

然后你可以使用你建议的规则:
$validator = Validator::make($data, [
'data.*.name' => 'required|string',
'data.*.' => 'required|string'
]);

不是最优雅的解决方案,但它解决了您的问题......

关于arrays - Laravel 验证对象 JSON 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46221659/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com