控制器规则:
$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。