0

有谁知道如何使用 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”方式来处理这样的嵌套输入?

在此先感谢,丹。

4

2 回答 2

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']存在于数组中。您需要在进行验证之前对此进行验证。

工作但效率不高。

于 2013-05-29T17:40:19.577 回答
0

您可以为数量输入制作一个额外的 Validator 对象。它需要更多代码,但我认为它比合并到一个数组更强大

于 2013-05-31T08:44:59.260 回答