Codeigniter,钩子没有正确加载输入类


Codeigniter , hook not loading Input class correctly

我在CI 1.7.3版本中遇到了一个简单的钩子。

我在config hook.php文件中设置了一个[pre_controller]钩子,钩子代码如下:

class Cookie {
function remember_me(){
 $CI =& get_instance();
 if($CI->input->cookie('remember_me_id',true)){
   $CI->load->model('user');
   $user =  $CI->user->populateById($id = $CI->input->cookie('remember_me_id',true));
   if($user){
   if($CI->input->cookie('remember_me_token',true) == md5($user->email.$user->password)){
   $CI->bootstrap->setUserSession($user);
   }
  }
 }
}
}
//end class

钩子被加载并执行,但它没有加载输入库,导致它返回错误:在非对象

上调用成员函数cookie()

这怎么可能?是否有可能在钩子执行后加载输入库?:阿…原因在控制器,视图和模型输入库工作没有错误:/

正确,输入类没有在pre_controller钩子上加载。您需要使用post_controller_constructor钩子。

如果这对你来说还不够早,你需要重写CI_Controller类本身

你的怀疑是对的。最好是扩展Controller类并将代码放入它的构造函数中。确保让所有的控制器都继承你创建的类。

要了解更多细节,请参阅1.7版用户指南中的"扩展核心类"