установите флажок проверки в Codeigniter - PullRequest
3 голосов
/ 11 октября 2011

Я новичок в Codeigniter, и у меня возникли проблемы с проверкой поля выбора. Я хочу выбрать значение по умолчанию в начале.

<select name="schooGroups[]">
<option value="0">Select User Group</option>
<option value="1">Admin</option>
</select>

как мне сделать это обязательным для заполнения в форме и отобразить сообщение об ошибке при выборе нулевого значения "0".

Ответы [ 3 ]

18 голосов
/ 11 октября 2011

Запись будет помечена как «выбрано» как ... выбрано по умолчанию.Вам нужен выпадающий список с множественным выбором, верно?

<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;
}
2 голосов
/ 10 декабря 2015

Правильный способ сделать это - установить значение параметра по умолчанию пустым! Затем вы можете использовать простое правило 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');
1 голос
/ 28 июня 2016

Этот работал для меня.

ВИД

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

CALLBACK

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;
    }
}
...