Я новичок в Codeigniter, и у меня есть некоторые проблемы при проверке правильности выбора. Я хочу установить значение по умолчанию в начале.
<select name="schooGroups[]"> <option value="0">Select User Group</option> <option value="1">Admin</option> </select>
как я могу сделать это обязательным полем в форме и отобразить сообщение об ошибке при выборе нулевого значения «0».
Это будет иметь запись, помеченную как «выбранная» как … выбранная по умолчанию. Вы хотите выпадающий список с несколькими выборами, не так ли?
<select name="schoolGroups[]" multiple="multiple"> <option value="0" selected="selected">Select User Group</option> <option value="1">Admin</option> </select>
Что касается проверки, вы можете создать собственное правило проверки:
Способ вашего контроллера:
//... $this->form_validation->set_rules('schoolGroups','School groups','required|callback_check_default'); $this->form_validation->set_message('check_default', 'You need to select something other than the default'); //...
Добавьте этот другой метод:
function check_default($array) { foreach($array as $element) { if($element == '0') { return FALSE; } } return TRUE; }
Если вам нужен только один выбор (без возможности мультиселекции), это еще проще:
HTML:
<select name="schoolGroups"> <option value="0" selected="selected">Select User Group</option> <option value="1">Admin</option> </select>
Метод с проверкой:
$this->form_validation->set_rules('schoolGroups','School groups','required|callback_check_default'); $this->form_validation->set_message('check_default', 'You need to select something other than the default');
Перезвони:
function check_default($post_string) { return $post_string == '0' ? FALSE : TRUE; }
Правильный способ сделать это – установить значение по умолчанию для пустого! Затем вы можете использовать простое правило form_validation, например, для текстового поля:
<select name="schoolGroups"> <option value="">Select User Group</option> <option value="1">Admin</option> </select>
,
$this->form_validation->set_rules('schoolGroups','School groups','required');
Этот работал для меня.
ВИД
<select name="schoolGroups[]" multiple="multiple"> <option value="">Select User Group</option> <option value="1">Admin</option> </select>
КОНТРОЛЛЕР
$this->form_validation->set_rules('schoolGroups','School groups','callback_check_default');
ПЕРЕЗВОНИ
function select_validate() { $choice = $this->input->post("schoolGroups"); if(is_null($choice)) { $choice = array(); } $schoolGroups = implode(',', $choice); if($schoolGroups != '') { return true; } else { $this->form_validation->set_message('select_validate', 'You need to select a least one element'); return false; } }