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

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/23880126/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-09-14 09:33:36  来源:igfitidea点击:

Laravel 4: validate checkbox at least one

phpvalidationlaravellaravel-4

提问by mwafi

I need to validate checkbox array:

我需要验证复选框数组:

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

I found "array" validation in documentation:

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

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

Is there any built-in way to check if at least one item checked? Also, how to check if values submitted match a given list?

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

回答by Maury

You can use min:valueto validate a numeric value and you can also use it to validate an array's size.

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

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

Examples:

例子:

$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

回答by sumeet

As of laravel 5 you can just add required rule

从 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

回答by Greg

If you don't mind touching your input data, you could do:

如果您不介意触摸输入数据,则可以执行以下操作:

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

回答by ggdx

Bit late to this party but surely just making it "required" will suffice?

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

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