Laravel 4:验证复选框至少一个

时间:2014-05-27 02:17:48

标签: php validation laravel laravel-4

我需要验证复选框数组:

<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' ]
);

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

4 个答案:

答案 0 :(得分:7)

您可以使用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

答案 1 :(得分:6)

从laravel 5开始,您只需添加必需的规则

即可
ar.forEach(function(el, index, array){
  console.log(index);
});

答案 2 :(得分: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 :(得分:1)

这个派对迟到了,但肯定只是让它“必需”就足够了吗?

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