【发布时间】:2016-02-22 11:52:15
【问题描述】:
假设我有这个 JSON 请求到我的 Laravel 路由
{
"user_id":1,
"payment_type":"point",
"order_boxes":[
{
"for_friend_name":"Yansen",
"order_box_items":[
{
"product_id": 1,
}
]
}
]
}
我可以使用以下代码使用 Laravel Validator 将请求验证到“order_boxes”数组级别:
$rules = [
'user_id' => 'required|exists:users,id',
'payment_type' => 'required|in:point,cod,transfer,credit_card',
'order_boxes' => 'required|array',
];
$validator = Validator::make($request->all(), $rules);
$validator->each('order_boxes',[
'for_friend_name' => ['max:25'],
'order_box_items' => ['required','array']
]);
正如您在“order_boxes”中看到的“order_box_items”,我添加了另一个“数组”规则并尝试再次验证该数组。我在下面添加了这段代码:
$validator->each('order_box_items',[
'product_id' => ['required','exists:products,id']
]);
但它返回“每个()的属性必须是一个数组”。
所以我相信 $validator->each() 只能验证数组的第一级。关于如何使用它验证数组的第二级的任何想法?
谢谢
【问题讨论】:
-
不是验证器专家,但是如果
'order_box_items'不在$request->all的根中,验证器如何提取它的值?
标签: validation laravel