【发布时间】:2018-02-23 14:07:49
【问题描述】:
我的 Laravel 5.5 API 上有一个 POST 端点,我使用邮递员来测试我的路线,这就是问题所在。 我想发送一个同类型对象的数组,像这样:
[
{
"name":"test",
"tag":"TEST"
},
{
"name":"test2",
"tag":"TEST_2"
}
]
但我无法正确验证它。
在我的控制器中,我有这个:
$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(),但没有成功。
我也尝试过循环,但出现异常
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,我认为这有点多余。
有没有更好的方法来处理这个问题?
【问题讨论】:
-
您需要使用密钥发送数据,然后像在上一个示例中所做的那样进行验证。这是正确的方法。
标签: arrays json api validation laravel-5