如果单选按钮选择了Codeigniter,则设置验证

时间:2016-05-20 00:47:18

标签: php codeigniter

所以我有两个名为Result的单选按钮,它具有值Fit和Unfit。还有一个名为Detail的表单输入。如果选中Unfit,则必须填写详细信息。我如何设置验证。目前我在控制器中有回调函数,如下所示:

public function _is_detail_required()
{
    $result = $this->input->post('Result', true);
    if ($result != 'Unfit') {
        $detail = $this->input->post('Detail', true);
        if ($result == 'Unfit') {
            $this->form_validation->set_message('_is_detail_required', '%s harus diisi.');
            return false;
        }
    }
    return true;
}

这是我为Detail:

设置的验证规则(在models目录上)
$form_rules = array(
array(
        'field' => 'Result',
        'label' => 'Result',
        'rules' => 'trim|xss_clean|required|max_length[50]'
    ),
array(
        'field' => 'Detail',
        'label' => 'Detail',
        'rules' => 'trim|xss_clean|callback__is_detail_required|max_length[50]'
    )
);

我的问题是,这个回调函数不起作用。我该如何解决?任何帮助将非常感谢。

2 个答案:

答案 0 :(得分:1)

您可以尝试在表单验证中添加它:

$CI =& get_instance();
if ($CI->input->post('Result') == 'Unfit') {
    $form_rules[] = array(
       'field' => 'Detail',
       'label' => 'Detail',
       'rules' => 'trim|xss_clean|required|max_length[50]'
   );
}

注意:如果您的验证位于控制器中,请使用$this。如果没有,请改用$CI =& get_instance();

答案 1 :(得分:0)

我写的回调函数是错误的,它没有检查输入表单(Detail)是否为空,所以这是正确的

public function _is_detail_required()
{
$result = $this->input->post('Result', true);
if (! empty($result) && $result == 'Unfit') {
    $detail = $this->input->post('Detail', true);
    if (empty($detail)) {
        $this->form_validation->set_message('_is_detail_required', '%s harus diisi.');
        return false;
    }
}
return true;
}