Php Codeigniter回调失败
有人能看到我遗漏了什么吗 我正在使用Codeigniter v1.72 在文件中: 它说: $this->form_validation->set_规则('username'、'username'、'callback_username_check') 在我的类中,用户扩展控制器 我有一个功能寄存器:Php Codeigniter回调失败,php,codeigniter,callback,Php,Codeigniter,Callback,有人能看到我遗漏了什么吗 我正在使用Codeigniter v1.72 在文件中: 它说: $this->form_validation->set_规则('username'、'username'、'callback_username_check') 在我的类中,用户扩展控制器 我有一个功能寄存器: $this->form_validation->set_rules('username', 'Username', 'trim|required|xss_clean', 'callba
$this->form_validation->set_rules('username', 'Username', 'trim|required|xss_clean', 'callback_username_check('.$username.')');
I have also tried
$this->form_validation->set_rules('username', 'Username', 'trim|required|xss_clean', 'callback_username_check');
及
根本没有错误,我的方法都不起作用,代码的行为就像它不存在一样。首先,我假设您的其余代码是正确的。它可能有助于显示整个
User
类
您可能需要检查CodeIgniter是否允许您在同一规则中调用回调函数和预处理/验证函数。如果它不允许这样做,您可以在回调函数中调用trim
、require
和xss\u clean
不过,我会说,如果允许的话,那么这肯定是正确的形式:
$this->form_validation->set_规则('username'、'username'、'trim | required | xss_clean'、'callback_username_check')代码>
这是错误的:
$this->form_validation->set_rules('username','username','trim | required | xss_clean','callback_username_check['.$username.]')代码>
这也是错误的:
$this->form_validation->set_rules('username','username','trim | required | xss_clean','callback_username_check('.$username'))代码>
看,在这一行中,实际上不应该调用函数。相反,您要将一个字符串传递给set_rules()
函数,该函数将解析该字符串,并确定要将哪个函数用作回调函数
如文档所述,无论username
的值是什么,都将作为参数传递给回调函数
编辑:
我想说试试这个:
$this->form_validation->set_rules('username'、'username'、'trim | required | xss_clean | callback_username_check')代码>
但我认为这不会奏效。相反,这应该是可行的:
function username_check($str)
{
$this->load->model('User_model', '', TRUE);
$taken = $this->User_model->countUsername($str);
if($taken)
{
$this->form_validation->set_message('username_check', 'That username is already taken');
return FALSE;
}
else if(!$str) {
// This is functioning as the required rule
return FALSE;
}
else {
$str = trim($str);
$str = $this->input->xss_clean($str);
return $str;
}
}
首先,我假设您的其余代码是正确的。它可能有助于显示整个User
类
您可能需要检查CodeIgniter是否允许您在同一规则中调用回调函数和预处理/验证函数。如果它不允许这样做,您可以在回调函数中调用trim
、require
和xss\u clean
不过,我会说,如果允许的话,那么这肯定是正确的形式:
$this->form_validation->set_规则('username'、'username'、'trim | required | xss_clean'、'callback_username_check')代码>
这是错误的:
$this->form_validation->set_rules('username','username','trim | required | xss_clean','callback_username_check['.$username.]')代码>
这也是错误的:
$this->form_validation->set_rules('username','username','trim | required | xss_clean','callback_username_check('.$username'))代码>
看,在这一行中,实际上不应该调用函数。相反,您要将一个字符串传递给set_rules()
函数,该函数将解析该字符串,并确定要将哪个函数用作回调函数
如文档所述,无论username
的值是什么,都将作为参数传递给回调函数
编辑:
我想说试试这个:
$this->form_validation->set_rules('username'、'username'、'trim | required | xss_clean | callback_username_check')代码>
但我认为这不会奏效。相反,这应该是可行的:
function username_check($str)
{
$this->load->model('User_model', '', TRUE);
$taken = $this->User_model->countUsername($str);
if($taken)
{
$this->form_validation->set_message('username_check', 'That username is already taken');
return FALSE;
}
else if(!$str) {
// This is functioning as the required rule
return FALSE;
}
else {
$str = trim($str);
$str = $this->input->xss_clean($str);
return $str;
}
}
我看不出在哪里可以向这个函数添加回调。@helle:这个函数是回调函数。如果你阅读他引用的网页,你会看到callback\u username\u check
将username\u check
设置为回调。我看不出在哪里可以向这个函数添加回调。@helle:这个函数是回调函数。如果你阅读他引用的网页,你会看到callback\u username\u check
将username\u check
设置为回调。谢谢!!!这是有效的:$This->form_validation->set_rules('username','username','callback_username_check');但现在我不能称trim、require和xss_为clean。你知道怎么做吗?谢谢!!!这是有效的:$This->form_validation->set_rules('username','username','callback_username_check');但现在我不能称trim、require和xss_为clean。你知道怎么做吗?
function username_check($str)
{
$this->load->model('User_model', '', TRUE);
$taken = $this->User_model->countUsername($str);
if($taken)
{
$this->form_validation->set_message('username_check', 'That username is already taken');
return FALSE;
}
else if(!$str) {
// This is functioning as the required rule
return FALSE;
}
else {
$str = trim($str);
$str = $this->input->xss_clean($str);
return $str;
}
}