Codeigniter - проверка формы флажка - PullRequest
2 голосов
/ 10 августа 2011

У меня есть правило проверки формы для формы с несколькими флажками:

$this->form_validation->set_rules('groupcheck[]', 'groupcheck', 'required');

Если ни один из моих флажков не установлен при отправке, мой код никогда не проходит проверку-> запуск, поскольку переменная не существует:

if ($this->form_validation->run()):

Если я окружу свое правило проверки проверкой на переменную, проверка никогда не пройдет, так как других правил проверки формы нет:

if(isset($_POST['groupcheck'])):
   $this->form_validation->set_rules('groupcheck[]', 'groupcheck', 'required');
endif;

Как я могу управлять правилом проверки флажка, где переменная может не существовать, и это будет единственная переменная формы?

С уважением, Бен.

Ответы [ 4 ]

2 голосов
/ 10 августа 2011

Не используйте isset () в CodeIgniter, поскольку CodeIgniter предоставляет лучший класс для проверки, существует ли проверяемая переменная POST или нет, например, попробуйте использовать этот код вместо кода:

if($this->input->post('groupcheck')):
   $this->form_validation->set_rules('groupcheck[]', 'groupcheck', 'required');
endif;

Для использования Guidline о том, как использовать переменные POST и GET в CodeIgniter, ознакомьтесь с Руководством пользователя здесь: http://codeigniter.com/user_guide/libraries/input.html

0 голосов
/ 31 марта 2014

Вам также необходимо установить кнопку отправки

    $this->form_validation->set_rules('terminos_form', 'TERM', 'required');
    $this->form_validation->set_rules('terminosbox', 'TERM BOX', 'callback__acept_term');

Обратный вызов

    function _acept_term($str){
        if ($str === '1'){ 
            return TRUE;
        }
            $this->form_validation->set_message('_acept_term', 'Agree to the terms');
            return FALSE;
}

HTML

<input type="checkbox" name="terminosbox" value="1"/>
<button type="submit" name="terminos_form" value="1">NEXT</buttom>
0 голосов
/ 20 февраля 2013

Вы можете сравнить validation_errors() после $this->form_validation->run(), если FALSE, тогда ничего не подтверждено, поэтому вы можете что-то сделать или показать предупреждение

if ($this->form_validation->run() == FALSE) {
    if (validation_errors()) {
        echo validation_errors();
    } else {
        echo 'empty';
    }
}
0 голосов
/ 09 февраля 2013

У меня была такая же проблема.Если ваш флажок снят, то он никогда не будет опубликован.Удалите set_rules для ваших флажков и после других правил проверки формы попробуйте что-то вроде:

    if ($this->form_validation->run() == TRUE){ // form validation passes 

        $my_checkbox_ticked = ($this->input->post('my_checkbox')) ? yes : no;
...