如何在回调函数中使用codeigniter内置表单验证函数?

时间:2013-12-03 16:06:14

标签: codeigniter

您好我正在尝试使用codeigniter表单验证类验证用户注册表单。在我的表单中,大多数字段都使用codeigniter表单验证类进行验证。但是一个字段'电子邮件'必须通过数据库验证字段是否可以注册用户输入的电子邮件。当我使用回调函数时,其他字段验证(例如required | trim | xss_clean | valid_email等)不起作用。

我不想为CI中已存在的每个验证(如valid_email)手动编写代码。当我对此字段使用回调函数时,CI表单验证不适用。 这是我的代码:

我的表格:

<input type="text" name="first_name"/>
<input type="text" name="last_name"/>
<input type="text" name="email"/>
<input type="password" name="password"/>
<input type="password" name="cpassword"/>

这是我的控制器:

$this->form_validation->set_rules('first_name','First Name','required|trim|xss_clean');
    $this->form_validation->set_rules('last_name','Last Name','required|trim|xss_clean');
    $this->form_validation->set_rules('email','Email','valid_email|xss_clen|required|callback_email_check');
    $this->form_validation->set_rules('password','Password','required|min_length[6]|max_length[20]|trim|xss_clean');
    $this->form_validation->set_rules('cpassword','Retype Password','callback_password_match');

我对email_check的回调函数:

public function email_check()
{
    $email=$this->input->post('email'); 

    if($this->home_mod->email_available($email))
    {
        $this->form_validation->set_message('email_check', 'Another user with this email is already registered. Please try different email');   
        return FALSE;
    }

}

现在,完成所有这些后,表单验证规则valid_email | required等不适用。 我做错了什么?

1 个答案:

答案 0 :(得分:0)

所有代码看起来格式正确,但检查后是否通过后返回true。像这样:

public function email_check()
{
    $email=$this->input->post('email'); 

    if($this->home_mod->email_available($email))
    {
        $this->form_validation->set_message('email_check', 'Another user with this email is already registered. Please try different email');   
        return FALSE;
    } return true; //Add here

}