Php 库中的CodeIgniter验证不接受回调

Php 库中的CodeIgniter验证不接受回调,php,validation,codeigniter,callback,Php,Validation,Codeigniter,Callback,我的问题如下:我正在编写一个登录库。 此库有一个函数_validation(),它使用验证库验证数据。 使用普通的验证方法可以很好地工作,但是使用回调函数是不起作用的。它不叫 我这样称呼它 $this->CI->form_validation->set_rules('user', 'Username', 'required|callback__check_user'); 函数名为_check_user,它使用用户名_check_user($user)。 函数本身工作正常,我也

我的问题如下:我正在编写一个登录库。 此库有一个函数_validation(),它使用验证库验证数据。 使用普通的验证方法可以很好地工作,但是使用回调函数是不起作用的。它不叫

我这样称呼它

$this->CI->form_validation->set_rules('user', 'Username', 'required|callback__check_user');
函数名为_check_user,它使用用户名_check_user($user)。 函数本身工作正常,我也可以在类($this->\u check\u user('username')中调用它,并得到一个工作结果

我猜,可能有问题,因为我没有在控制器中工作,所以我有一个CI实例$this->CI,而不仅仅是原始实例$this->

有人知道如何解决这个问题吗


提前感谢。

表单验证回调将仅在当前控制器内的方法上触发

只需在使用回调的控制器中执行以下操作:

function _check_user($user)
{
    $this->load->model('login');
    $result = $this->login->_check_user($user);
    return $result;
}

嘿,我想出了一个适合我的方法。只需扩展MY_Form_validation.php中的Form_验证库,就可以创建自定义验证方法。我认为这是一个干净的方式,它的工作非常好。我构建了下面的验证方法来检查现有的用户名和密码$值类似于table_name.fieldname。 我没有设置消息,因此它将使用lang文件中的_exist消息

/**
 * Exist
 *
 * checks if the entry exists in the database
 * returns a boolean
 *
 * @access  private
 * @param   string
 * @param   field
 * @return  boolean
 */
function _exist($str, $value)
{       
    list($table, $column) = explode('.', $value, 2);    
    $query = $this->CI->db->query("SELECT COUNT(*) AS count FROM $table WHERE $column = '$str'");
    $row = $query->row();
    return ($row->count > 0) ? TRUE : FALSE;
}

不过谢谢你的帮助。

是“必选”吗?您是否为回调设置了错误消息?如果你在回拨中呼出了什么,你看到了吗?您的回拨功能是否受保护或专用或其他任何功能?嗯,需要启动。我确实设置了一条错误消息(需要调用它)。是的,回调是私有的,但不受保护。这不起作用,因为我正在构建一个库,而不是一个控制器。没有其他方法可以让回调正常工作吗?我想它只是检查
$this->\u my_callback()
,所以我不明白为什么这种方法在库中不起作用。嗯,它不起作用。我想这是因为它必须检查$this->CI->\u my\u callback()。我认为这可能是最好的方法。它在您使用表单验证库的任何地方都可用,而不仅仅是在您创建的单个自定义库中。仅供大家参考,在我尝试使用
MY\u form\u validation
扩展表单验证库时,有一件事让我大吃一惊,那就是取消
->form\u validation->set\u rules(…)中的
回调
因为它不再是控制器中的回调。请注意上面@JordanArseno的回答中的这一点,其中
belongstowork
的前面没有
callback\uuu