2014-02-14 37 views
0

當用戶訪問我網站上的任何頁面時,我有以下掛鉤。我想弄清楚如果當前用戶被發現,如何讓頁面訪問帶有當前用戶對象的$ data數組。當我登錄後在我的cms中訪問一個頁面時,說我在變量上運行vardump時數據數組爲NULL。無法從CI掛鉤中檢索數據數組

<?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

鉤應該只是一個類,你不需要再次擴展CI_Controller。認爲你再次擴展CI,這意味着你正在創建新的CI對象,所以他們彼此不認識。你只應該需要創建一個類,這個類裏面,如果你想使用的任何C變量,庫,模型,你需要創建一個CI實例

$CI =& get_instance();

然後用$CI->data();其中$CI是是CI_Controller

你運行什麼類型的鉤子?如果您將數據設置爲控制器功能,則應使用post_controller