由于某种原因,表单验证不会调用我在规则中设置的回调函数。
这是规则集
if( ! empty($_POST))
{
ci()->form_validation->set_rules('login', 'Username', 'trim|required');
ci()->form_validation->set_rules('email', 'Email', 'trim|required|valid_email|callback_check_email');
if (ci()->form_validation->run() == TRUE)
{
}
}
和一个功能
public function check_email($str)
{
ci()->load->model(array('secure_model', 'admin/members_model'));
$o['username'] = ci()->input->post('login');
$o['email'] = ci()->input->post('email');
$m = $this->_model->get_row($o);
if ( ! $m)
{
$this->form_validation->set_message('check_email', lang('unlock_incorrect_login'));
return FALSE;
}
else
{
return FALSE;
}
}
我设置FALSE
两次以查看它是否调用回调函数但它不显示错误消息。所以我认为CI不会试图称之为。有什么问题?
答案 0 :(得分:0)
在check_email()
功能中,您使用$this->form_validation
代替ci()->
。我不确定您为什么使用ci()
而不是使用$this
的标准CI方式,但这是您的代码中与其他代码相比较的部分。