【问题标题】:Nested input with L4's validator使用 L4 的验证器嵌套输入
【发布时间】:2013-05-25 01:34:44
【问题描述】:

有人知道如何使用 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”方式?

提前致谢, 丹。

【问题讨论】:

    标签: php laravel laravel-4


    【解决方案1】:

    肮脏的方式....

    控制器

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

    有效但效率不高。

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2023-03-11
        • 2021-04-15
        • 1970-01-01
        • 2012-09-22
        • 2019-05-16
        • 1970-01-01
        • 1970-01-01
        • 2021-04-22
        相关资源
        最近更新 更多