#php #forms #codeigniter #checkbox #validation
#php #формы #codeigniter #флажок #проверка
Вопрос:
У меня есть набор флажков в моем HTML, которые выглядят следующим образом,
div class="grid_7">
<fieldset class="age shadow_50">
<label class="legend">Age Group</label>
<div class="formRow checkbox">
<input id="" type="checkbox" name="age[]" value="child" />
<label>Child</label>
</div>
<div class="formRow checkbox">
<input id="" type="checkbox" name="age[]" value="30's" />
<label>30s</label>
</div>
<div class="formRow checkbox">
<input id="" type="checkbox" name="age[]" value="60's" />
<label>60's</label>
</div>
<div class="formRow checkbox">
<input id="" type="checkbox" name="age[]" value="teen" />
<label>Teen</label>
</div>
<div class="formRow checkbox">
<input id="" type="checkbox" name="age[]" value="40's" />
<label>40's</label>
</div>
<div class="formRow checkbox">
<input id="" type="checkbox" name="age[]" value="70's" />
<label>70's</label>
</div>
<div class="formRow checkbox">
<input id="" type="checkbox" name="age[]" value="20's" />
<label>20's</label>
</div>
<div class="formRow checkbox">
<input id="" type="checkbox" name="age[]" value="50's" />
<label>50's</label>
</div>
</fieldset>
</div>
Я установил в своем контроллере правило проверки, которое (на мой взгляд) гарантирует, что флажок установлен,
$this->form_validation->set_rules('age[]', 'age group', 'required|trim');
Однако при тестировании этого я получаю сообщение об ошибке для вечного флажка с именем age[] Я просто хочу проверить, что age[] не является пустым.
Как я могу этого добиться?
Ответ №1:
Вы не можете так тестировать age[]
, это массив. Есть несколько способов сделать это, но то, что вы сделали required
, не является одним из них.
Вы можете использовать javascript или запустить age[]
значение через свою собственную пользовательскую функцию обратного вызова — это один из методов.
Подробная информация об использовании массивов в CI приведена здесь:
https://ellislab.com/codeigniter/user-guide/libraries/form_validation.html#arraysasfields
Если вы делаете это по маршруту javascript, вы можете использовать jQuery для перебора ваших флажков (используйте класс, чтобы связать их) и просто убедитесь, что 1 из них отмечен.
Ответ №2:
Старый вопрос, но для тех, кто пытается это сделать, я считаю, что вы можете сделать это, установив правило age
, а не age[]
, т.е.
$this->form_validation->set_rules('age', 'age group', 'fnName');