Мне нужно проверить флажок:
<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' ]; }