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

Есть ли встроенный способ проверить, проверен ли хотя бы один элемент? Кроме того, как проверить, соответствуют ли значения указанному списку?

Вы можете использовать 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 

Начиная с 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 

Если вы не возражаете касаться ваших входных данных, вы можете сделать следующее:

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

Бит поздно на эту вечеринку, но наверняка просто сделать ее «необходимой» будет достаточно?

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