您好我正在尝试使用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等不适用。 我做错了什么?
答案 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
}