Codeigniter回调验证问题

时间:2010-10-09 05:14:37

标签: validation codeigniter callback

我想创建一个在验证过程中使用的回调函数来检查用户名/电子邮件地址是否已经存在于数据库中...问题是我似乎无法使其正常工作

所以这是回调函数:

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

2 个答案:

答案 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
}