Forms 两个表中唯一电子邮件的CI表单验证?

Forms 两个表中唯一电子邮件的CI表单验证?,forms,codeigniter,validation,Forms,Codeigniter,Validation,我想检查一下提交的表格,在“学生注册”和“员工”两个表格中,电子邮件是唯一的。我试过这个: $this->form_validation->set_rules('email', 'Email', 'required|xss_clean|trim|is_unique[student_registration.email]'); $this->form_validation->set_rules('email', 'Email', 'required|xss_clean|tr

我想检查一下提交的表格,在“学生注册”和“员工”两个表格中,电子邮件是唯一的。我试过这个:

$this->form_validation->set_rules('email', 'Email', 'required|xss_clean|trim|is_unique[student_registration.email]');
$this->form_validation->set_rules('email', 'Email', 'required|xss_clean|trim|is_unique[staffs.email]');

问题是,若电子邮件在student表中不是唯一的,但在Staff表中是唯一的,那个么它将成功提交表单,因为上次验证将其设置为true。如何解决此问题?

您可以使用回调函数

 $this->form_validation->set_rules('email', 'email', 'required|callback_has_email[email]');
回拨功能

 public function has_email($str)
        {

/*do your stuff check for email*/
            if (true)
            {
                $this->form_validation->set_message('has_email', 'The %s field already register');
                return FALSE;
            }
            else
            {
                return TRUE;
            }
        }
尝试:

$this->form_validation->set_rules('email', 'Email', 'required|xss_clean|trim|is_unique[student_registration.email]|is_unique[staffs.email]');

你能提供一些细节吗?