编码器表单验证错误-无法访问与您的字段名称对应的错误消息


Codeigniter form validation error - Unable to access an error message corresponding to your field name

控制器规则:

$this->form_validation->set_rules('text', $this->lang->line('text_input_name'), 'required|trim|callback_ValidateTooltipTags['. $this->input->post('text') .']');

控制器中的回调:

public function ValidateTooltipTags($string)
{
    $this->load->model('library_model');
    if($this->library_model->ValidateTooltipTags($string))
    {
        return TRUE;
    }
    else
    {
        $this->form_validation->set_message('ValidateTooltipTags', $this->lang->line('site_message_invalid_tooltip_tags'));
        return FALSE; //or TRUE, it doesn't matter i always get validation error
    }
}

我总是得到验证错误,即使我改变FALSE回调为TRUE。你知道是怎么回事吗?非常感谢。

我想,我明白了:

您不必向验证函数提交值,只需调用它:

$this->form_validation->set_rules('text', $this->lang->line('text_input_name'), 'required|trim|callback_ValidateTooltipTags');

更新:

您不必传输字段值,但是您必须使用此参数编写回调函数,就像您所做的那样。Codeigniter正在为您提交此值:

public function ValidateTooltipTags($string)
{
    $this->load->model('library_model');
    if($this->library_model->ValidateTooltipTags($string))
    {
        return TRUE;
    }
    else
    {
        $this->form_validation->set_message('ValidateTooltipTags', $this->lang->line('site_message_invalid_tooltip_tags'));
        return FALSE; //or TRUE, it doesn't matter i always get validation error
    }
}

参见文档:http://www.codeigniter.com/userguide3/libraries/form_validation.html#callable-use-anything-as-a-rule

我明白了,而不是使用这个:

$this->form_validation->set_rules('text', $this->lang->line('text_input_name'), 'required|trim|callback_ValidateTooltipTags['. $this->input->post('text') .']');
使用

:

$text = $this->input->post('text');
$this->form_validation->set_rules('text', $this->lang->line('text_input_name'), 'required|trim|callback_ValidateTooltipTags[$text]');

或:

$this->form_validation->set_rules('text', $this->lang->line('text_input_name'), 'required|trim|callback_ValidateTooltipTags['. $this->input->post(''text'') .']');

谢谢你的时间,Joerg。