我刚开始看钩子今天不是100%肯定我做错了但是当我尝试在我的函数中使用$ ci对象时我遇到了错误。
遇到PHP错误 严重性:注意 消息:尝试获取非对象的属性 文件名:hooks / language.php 行号:12
我的钩子文件看起来像这样。它位于我的应用程序文件夹中的hooks目录中。
class Language{
var $ci;
public function __construct(){
$this->ci =& get_instance();
}
function get_language(){
echo $this->ci->session->userdata('language');
}
}
我需要在会话中获取要在我的函数中使用的值。我不应该这样做吗?
谢谢!
答案 0 :(得分:2)
在Base4 / 5.php文件中,写入了get_instance()函数并且它是有条件加载的,所以它在加载之后才会出现。这就是它给出错误的原因。
答案 1 :(得分:0)
刚刚完成了另一个谷歌搜索,看起来我正在使用Pre Controller的Hook是在创建对象之前我已经改变了钩子,它现在似乎工作正常。
答案 2 :(得分:0)
我使用post_controller_constructor
作为我的钩子,然后CI工作。
我不得不打开配置中的挂钩。
答案 3 :(得分:0)
以下是默认的application / config / hooks.php
// Stores the requested URL, which will sometimes be different than previous url
$hook['post_controller'][] = array(
'class' => 'App_hooks',
'function' => 'save_requested',
'filename' => 'App_hooks.php',
'filepath' => 'hooks',
'params' => ''
);
// Allows us to perform good redirects to previous pages.
$hook['post_controller'][] = array(
'class' => 'App_hooks',
'function' => 'prep_redirect',
'filename' => 'App_hooks.php',
'filepath' => 'hooks',
'params' => ''
);
// Maintenance Mode
$hook['post_controller_constructor'][] = array(
'class' => 'App_hooks',
'function' => 'check_site_status',
'filename' => 'App_hooks.php',
'filepath' => 'hooks',
'params' => ''
);
/* End of file hooks.php */
/* Location: ./application/config/hooks.php */
我已将其更改为以下内容并且对我来说效果很好
// Stores the requested URL, which will sometimes be different than previous url
$hook['post_controller_constructor'][] = array(
'class' => 'App_hooks',
'function' => 'save_requested',
'filename' => 'App_hooks.php',
'filepath' => 'hooks',
'params' => ''
);
// Allows us to perform good redirects to previous pages.
$hook['post_controller'][] = array(
'class' => 'App_hooks',
'function' => 'prep_redirect',
'filename' => 'App_hooks.php',
'filepath' => 'hooks',
'params' => ''
);
// Maintenance Mode
$hook['post_controller'][] = array(
'class' => 'App_hooks',
'function' => 'check_site_status',
'filename' => 'App_hooks.php',
'filepath' => 'hooks',
'params' => ''
);
/* End of file hooks.php */
/* Location: ./application/config/hooks.php */