Codeigniter - 复选框表格验证

时间:2011-08-10 17:58:11

标签: php forms validation codeigniter checkbox

对于包含多个复选框的表单,我有一个表单验证规则:

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

如果在提交时没有检查我的复选框,我的代码永远不会通过验证 - >运行,因为变量不存在:

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

如果我通过检查var包围我的验证规则,验证永远不会通过,因为没有其他表单验证规则:

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

如何管理var可能不存在的复选框验证规则,它将是唯一的表单变量?

问候,本。

4 个答案:

答案 0 :(得分:2)

不要在CodeIgniter中使用isset(),因为CodeIgniter提供了更好的类来检查您检查的POST变量是否存在,例如尝试使用此代码而不是代码:

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

对于Guidline使用如何在CodeIgniter中使用POST和GET变量,请在此处查看“用户指南”:http://codeigniter.com/user_guide/libraries/input.html

答案 1 :(得分:0)

我有同样的问题。 如果未选中您的复选框,则永远不会发布。删除复选框的set_rules,并在其他表单验证规则之后,尝试以下操作:

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

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

答案 2 :(得分:0)

您可以在validation_errors()之后对$this->form_validation->run()进行比较,如果FALSE,则无需验证,这样您就可以做某事或显示警告

if ($this->form_validation->run() == FALSE) {
    if (validation_errors()) {
        echo validation_errors();
    } else {
        echo 'empty';
    }
}

答案 3 :(得分:0)

您还需要设置按钮提交

    $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>