我想创建一个在验证过程中使用的回调函数来检查用户名/电子邮件地址是否已经存在于数据库中...问题是我似乎无法使其正常工作
所以这是回调函数:
function callback_username_available($username)
{
if($this->user_model->username_available($username))
{
return TRUE;
}
else
{
$this->form_validation->set_message('username_available', 'ERROR');
return FALSE;
}
}
这是验证逻辑:
// setup form validation rules
$this->load->library('form_validation');
$this->form_validation->set_rules('username', 'username', 'callback_username_available');
if($this->form_validation->run() == FALSE)
{
// validation errors
}
else
{
// no validation errors
}
我已经在这几个小时了,不知道我做错了什么......两个函数都在同一个控制器中,所有其他标准验证规则都运行得很好。
即使我将回调函数设置为仅返回FALSE,它仍然会验证用户名。
任何想法的家伙......此刻它让我崛起:S
答案 0 :(得分:5)
在CI中调用回调,您不需要将函数命名为“回调_ my_function” - 它会自动显示出来。
这应该有效:
function username_available($username)
{
if($this->user_model->username_available($username))
{
return TRUE;
}
else
{
$this->form_validation->set_message('username_available', 'ERROR');
return FALSE;
}
}
// set the rule
$this->form_validation->set_rules('username', 'Username', 'callback_username_available');
// lets do this ~
if ($this->form_validation->run() == FALSE)
{
$this->load->view('myform');
}
else
{
$this->load->view('formsuccess');
}
通过调用您的函数“callback_username_available”来澄清,CI正在尝试查找
callback_callback_username_available()当然不存在。
答案 1 :(得分:0)
// setup form validation rules
$this->load->library('form_validation');
$this->form_validation->set_rules('username', 'username', 'callback_callback_username_available');
if($this->form_validation->run() == FALSE)
{
// validation errors
}
else
{
// no validation errors
}