【问题标题】:Laravel 4: validate checkbox at least oneLaravel 4:验证复选框至少一个
【发布时间】:2014-07-15 19:37:30
【问题描述】:

我需要验证复选框数组:

<input name="cats[]" type="checkbox" value="1"> sport
<input name="cats[]" type="checkbox" value="2"> music
<input name="cats[]" type="checkbox" value="3"> business

我在文档中找到了“数组”验证:

Validator::make( 
    [ 'cats' => Input::get('cats') ],
    [ 'cats' => 'array' ]
);

是否有任何内置方法可以检查是否至少检查了一项?另外,如何检查提交的值是否与给定列表匹配?

【问题讨论】:

标签: php validation laravel laravel-4


【解决方案1】:

您可以使用 min:value 来验证数值,也可以使用它来验证数组的大小。

Validator::make( 
    [ 'cats' => Input::get('cats') ],
    [ 'cats' => 'min:1' ]
);

例子:

$validator = Validator::make([
    'cats' => ['Boots', 'Mittens', 'Snowball']
    ], ['cats' => 'min: 1']);

$result = $validator->fails(); // returns false

$validator = Validator::make([
    'cats' => ['Boots', 'Mittens', 'Snowball']
    ], ['cats' => 'min: 2']);

$result = $validator->fails(); // returns false

$validator = Validator::make([
    'cats' => ['Boots', 'Mittens', 'Snowball']
    ], ['cats' => 'min: 4']);

$result = $validator->fails(); // returns true

【讨论】:

  • no "min" 只验证文本的长度,而不是数组的长度,(测试不工作)
  • Laravel API 在哪里(你发现“min”可以验证数组大小)?请提供链接?
  • 我在文档中没有看到。直到今天我才知道这是可能的。我查看了Validator.php - 如果你查看 getSize 函数,你会发现它实际上是根据数组的大小来验证数组。
【解决方案2】:

如果您不介意触摸您的输入数据,您可以这样做:

$data = Input::all();
$data['cats'] = Input::has('cats') ? implode(',',$data['cats']) : null;
$rules = [ 'cats' => 'required|in:foo,bar' ];
$validator = Validator::make($data, $rules);

【讨论】:

    【解决方案3】:

    参加这个聚会有点晚了,但肯定只是让它成为“必需”就足够了吗?

    public function rules(){
        return [
            'checkboxarray' => 'required'
        ];
    }
    

    【讨论】:

      【解决方案4】:

      从 laravel 5 开始,您可以添加所需的规则

      <input name="cats[]" type="checkbox" value="1"> sport
      <input name="cats[]" type="checkbox" value="2"> music
      <input name="cats[]" type="checkbox" value="3"> business
      
      // Controller
      $rules = $this->validate($request, array('cats'=>'required'));
      // will do the work
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-07-27
        • 2011-03-13
        • 2015-11-06
        • 1970-01-01
        • 2017-05-30
        • 1970-01-01
        • 1970-01-01
        • 2016-09-11
        相关资源
        最近更新 更多