【问题标题】:Codeigniter form validation error - Unable to access an error message corresponding to your field nameCodeigniter 表单验证错误 - 无法访问与您的字段名称对应的错误消息
【发布时间】:2015-08-24 19:36:18
【问题描述】:

控制器中的规则:

$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。你有什么想法,有什么问题吗?非常感谢。

【问题讨论】:

  • 您是否尝试在函数中仅返回 TRUE 或 FALSE 而没有任何其他逻辑?
  • 是的,我都遇到了错误。
  • 那么你的控制器,表单,......但回调函数内部没有错误。

标签: php codeigniter


【解决方案1】:

我想,我明白了:

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

$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

【讨论】:

  • 这可行,但我需要在回调中使用该参数,因为我在更多规则中使用它。
【解决方案2】:

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

$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。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-23
    • 2022-01-05
    • 2015-12-16
    • 1970-01-01
    • 2015-12-21
    • 1970-01-01
    相关资源
    最近更新 更多