【发布时间】:2016-01-20 14:03:08
【问题描述】:
我有一个像这样的 JSON 结构,我想验证它。
{
"result":[{
"product_id": 1,
"client": 49,
"ticket": 2,
"sold_from_date": 1431588871,
"sold_to_date": 1433122200,
"discount_given":18,
"cheques":[{
"cheque_number" : 123456,
"amount": 6000,
"cheque_date": 1433122200,
"bank": "UCD"
},
{"cheque_number" : 456234,
"amount": 6000,
"cheque_date": 1433122200,
"bank": "AMB"
}
]
},
{
"product_id": 1,
"client": 49,
"ticket": 2,
"sold_from_date": 1433122200,
"sold_to_date": 1434688959
}]
}
我想在 Laravel 中验证这个 JSON。
我试过这样做:
$validator = \Validator::make($data, []);
$validator->each('result.product_id' , ['required|numeric']);
$validator->each('result.sold_from_date' , ['required|numeric']);
$validator->each('result.sold_to_date' , ['required|numeric']);
$validator->each('result.cheques.cheque_number' , ['sometimes|required|numeric']);
$validator->each('result.cheques.amount', ['sometimes|required|numeric']);
return $validator;
我每次都收到这个错误:
each() 的属性必须是一个数组。
另外,我如何验证支票?因为它可以或不能是 JSON。
【问题讨论】:
-
解决问题后,我读到每个方法都完成了任务。
-
如何编写
ProductValidator类并遍历result中的每个对象并将其传递给ProductValidator。如果一次失败,返回false。 -
是的,我也可以在这里完成。但是,这不是最好的方法。
标签: php json validation laravel