2015-02-24 96 views
1

我已经使用回调函数来检查电子邮件是否激活: 我的控制器没有访问回调函数。回调函数在codeigniter中不起作用

我控制器代码:

 function index() { 
    //Session redirection 
    header('Last-Modified:'.gmdate('D, d M Y H:i:s').'GMT'); 
    header('Cache-Control: no-store, no-cache, must-revalidate'); 
    header('Cache-Control: post-check=0, pre-check=0',false); 
    header('Pragma: no-cache'); 
    $this->session->unset_userdata('created_user_id'); 
    $this->session->unset_userdata('created_user_type'); 
    $this->session->unset_userdata('edit_user_type'); 
    if ($this->input->server('REQUEST_METHOD') === 'POST'){ 
    $this->form_validation->set_rules('email', 'Email ID', 'trim|required|valid_email'); 
    $this->form_validation->set_rules('terms', 'Terms', 'trim|required'); 
     if($this->input->post('email')) 
     { 
     $this->form_validation->set_rules('email', 'Email ID', 'callback_email_check'); 
     } echo "out"; die; 
    $this->form_validation->set_error_delimiters('<div class="error_user" style="color:red">', '</div>'); 
    if($this->form_validation->run()){ 
       if($this->input->post('Join')!="") { 
       $this->session->set_userdata('join_email', $this->input->post('email')); 
        redirect(base_url().'caregivers/my-account'); 
       } 
     } 
    } 
    $this->load->view('site/landing-page'); 

} 

我的回调函数代码:

public function email_check(){ 
    $get_status = $this->web_user_model->get_status($this->input->post('email')); 
    if($get_status['is_active']=='1') 
    { 
     $this->form_validation->set_message('email_check','Email ID already Exits'); 
     return FALSE; 
    }else{ 
     return TRUE; 
    } 

} 

我不知道我做了错误。 任何人都可以帮我吗? 在此先感谢..

回答

1

您设定两次有效性规则:

$this->form_validation->set_rules('email', 'Email ID', 'trim|required|valid_email'); 
.... 
if($this->input->post('email')) 
{ 
    $this->form_validation->set_rules('email', 'Email ID', 'callback_email_check'); 
} 

这是无用的,因为你已经设置你的电子邮件领域需要这样,如果已经通过验证规则检查。

尝试:

$this->form_validation->set_rules('email', 'Email ID', 'trim|required|valid_email|callback_email_check'); 

而且回调函数应该期待一个参数

public function email_check($email) 
{ 
    $get_status = $this->web_user_model->get_status($email); 
    ...