2012-11-15 38 views
2

我有一個用戶姓名和姓氏存儲在會話數據中,我想在視圖中回顯出來,以便他們可以查看他們登錄的人。我似乎無法讓數據通過。我確定這很簡單,但我對CI和整個MVC都很陌生。Codeigniter - 在視圖中使用會話數據

控制器代碼:

public function index() { 
    if($this->session->userdata('admin_signed_in')){ 
    $this->load->model('dashboard_model'); 
    $data['userdata'] = $this->session->userdata; 
    $data['main_content'] = 'dashboard/dashboard'; 
    $this->load->view('common/template', $data); 
    } else { 
    redirect('signin'); 
    } 

} 

查看代碼:

<?php echo $userdata('first_name') ?> <?php echo $userdata('last_name') ?> 

印記R結果:

Array ([session_id] => 69db0f9ccbfde96d92cc09837067438c [ip_address] => ::1 [user_agent] => Mozilla/5.0 (Macintosh; Intel Mac OS X 10.8; rv:16.0) Gecko/20100101 Firefox/16.0 [last_activity] => 1352998508 [user_data] => [0] => Array ([admin_id] => 10 [first_name] => Richard [last_name] => Coy [admin_role] => 1) [admin_signed_in] => 1) 
+1

您正在使用函數格式的'$ userdata'變量(使用parantheses),而這是一個變量,而您的情況是一個數組!嘗試使用'$ userdata ['firstname']'代替 – Aliweb

+0

'echo $ this-> session-> userdata('your_session_name');' –

回答

6

控制器代碼:

public function index() { 

    ... 
    $data['first_name'] = $this->session->userdata('first_name'); 
    ... 
} 

查看代碼:

<?= $first_name; ?> 

,或者,如果你想通過數據,如您目前,您就可以訪問視圖數據用戶數據作爲數組,而不是一個功能,即:

<?= $userdata['first_name'];?> 
+0

使用您提供的代碼無法傳遞給視圖。我已經添加了print_r結果來顯示數據在那裏。 –

+0

將用戶數據分配給它之後,在$ data ['first_name']中包含了什麼? – Darrrrrren

+0

我不知道如何檢查。 –

1

正如我在評論中提到的,當您爲數組$data分配一個值並將其傳遞給Codeigniter視圖加載器時,數據將在視圖部分中可用,其變量名稱與數組索引相同。
例如,當你這樣做:

$data['name'] = "bla bla"; 
$this->load->view('some_view', $data); 

然後在視圖中包含您傳遞價值$name變量。在你的情況下,你正在分配一個數組到$data['userdata']。所以視圖中的$userdata也會是一個數組。

所以這樣做:

echo $userdata['firstname']; 
echo $userdata['lastname']; 

視圖中的一部分。