所以我有两个名为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]'
)
);
我的问题是,这个回调函数不起作用。我该如何解决?任何帮助将非常感谢。
答案 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;
}