当用户访问我网站上的任何页面时,我都会运行以下钩子。我试图弄清楚如果找到当前用户,如何使用附加到数据数组的当前用户对象访问$ data数组的页面。当我在登录后访问我的cms中的页面时,当我对变量运行vardump时,表示数据数组为NULL。
<?php
if (!defined('BASEPATH'))
exit('No direct script access allowed');
class Dashboard extends CI_Controller {
public function __construct() {
parent::__construct();
dump_exit($this->data);
}
}
<?php
if (!defined('BASEPATH'))
exit('No direct script access allowed');
class Sys_prescript extends CI_Controller {
public $data = array();
function initial_run()
{
$public_access = array('login', 'registration');
$current_class = $this -> router -> fetch_class();
$user_id = $this -> session -> userdata('user_id');
if ($user_id == FALSE)
{
if (!in_array($current_class, $public_access))
{
redirect('login', 'refresh');
}
}
else
{
if ((!is_numeric($user_id)) || (strlen($user_id) < 5)) {
$this->session->unset_userdata('user_id');
$this->session->sess_destroy();
redirect('login', 'refresh');
}
else {
$this->load->model('user_model', 'user');
$current_user = $this -> user -> get($user_id);
if (!is_object($current_user)) {
$this -> session -> unset_userdata('user_id');
$this -> session -> sess_destroy();
redirect('login', 'refresh');
}
else {
$this->data['current_user'] = $current_user;
}
if (in_array($current_class, $public_access))
{
redirect('dashboard', 'refresh');
}
}
}
}
}
答案 0 :(得分:0)
Hook应该只是一个类,你不需要再次扩展CI_Controller。认为您再次扩展CI意味着您正在创建新的CI对象,因此他们彼此不了解。如果要使用创建CI实例所需的任何CI变量,库,模型,您应该需要在类中创建一个类
$CI =& get_instance();
然后使用$CI->data();
$CI
是CI_Controller
你跑的是什么样的钩子?如果您在控制器功能中设置数据,则应使用post_controller