对于包含多个复选框的表单,我有一个表单验证规则:
$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可能不存在的复选框验证规则,它将是唯一的表单变量?
问候,本。
答案 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>