Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/codeigniter/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Codeigniter,钩子未正确加载输入类_Php_Codeigniter_Hook - Fatal编程技术网

Php Codeigniter,钩子未正确加载输入类

Php Codeigniter,钩子未正确加载输入类,php,codeigniter,hook,Php,Codeigniter,Hook,我在CI版本1.7.3中遇到了一个简单的钩子问题 我在config hook.php文件中设置了一个[pre_controller]钩子,钩子代码是: 钩子已加载并执行,但未加载输入库,导致返回错误: 对非对象调用成员函数cookie() 怎么可能呢?是否可能在执行挂钩后加载输入库?:O ... 原因控制器、视图和模型输入库工作正常://您的怀疑是对的。您最好扩展控制器类并将代码放入其构造函数中。确保让所有控制器扩展创建的类 如需了解更多详细信息,请参见更正,输入类未加载到pre_控制器hoo

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

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

钩子已加载并执行,但未加载输入库,导致返回错误: 对非对象调用成员函数cookie()

怎么可能呢?是否可能在执行挂钩后加载输入库?:O
... 原因控制器、视图和模型输入库工作正常://

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


如需了解更多详细信息,请参见

更正,输入类未加载到
pre_控制器
hook。您需要使用
post\u controller\u构造函数
hook


如果这对您来说还不够早,您将需要重写CI_控制器类本身。

好的,但我不能在钩子中操作cookie是毫无意义的,不是吗/我无法在post_controller中使用Cookie操作,因为为时已晚:)应在pre_controller中读取Cookie以处理数据:(需要明确的是,它的post_controller_构造函数:即在运行控制器中的任何操作之前,但在初始化所有操作之后。我想您可以直接访问$_COOKIE数组,但这通常是一件值得避免的事情。
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