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

时间:2011-10-30 18:06:19

标签: php codeigniter hook

我在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()

怎么可能呢?可能有可能在执行挂钩后加载输入库? :o  ...导致控制器,视图和模型输入库无错误地工作:/

2 个答案:

答案 0 :(得分:2)

正确,输入类未加载到pre_controller挂钩。您需要使用post_controller_constructor挂钩。

如果这还不够早,您将需要覆盖CI_Controller类本身。

答案 1 :(得分:1)

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

有关详细信息,请参阅'Extending Core Classes' in 1.7's User Guide