有没有人知道如何使用Laravel 4验证器验证嵌套输入集?
我有一个包含一组订单项的表格,每个数量字段在名称的方括号中都有唯一的包ID:
<input type="text" name="quantity[package_one]" />
<input type="text" name="quantity[package_two]" />
这导致嵌套的输入数组:
<?php
array(
'quantity' => array(
'package_one' => 3,
'package_two' => 12
)
);
这正是我想要的,但我不确定如何使用验证器类为这些项目指定规则:
// Does not work :-(
Validator::make(Input::all(), array(
'quantity[package_one]' => 'numeric|required|min:1',
'quantity[package_two]' => 'numeric|required|min:1'
));
这似乎不起作用,也没有将规则嵌套在quantity
下。显然有一些解决方法,比如在将它传递给验证器等之前自己构建一个自定义输入数组,但我想知道的是:
是否存在处理嵌套输入的原生“Laravel”方法?
提前致谢, 丹。
答案 0 :(得分:0)
肮脏的方式......
$input = Input::all();
$input = array_merge($input, $input['quantity']);
Validator::make(Input::all(), array(
'package_one' => 'numeric|required|min:1',
'package_two' => 'numeric|required|min:1'
));
Validator不会查看嵌套数组。只需将该数组带到外部数组即可完成。 (如果你愿意,你可以取消设置$input['quntity']
)
$input['quantity']
。您需要在进行验证之前验证这一点。
工作但效率不高。
答案 1 :(得分:0)
您可以为数量输入创建额外的Validator对象。它需要更多的代码,但我认为它比合并到一个数组
更强大