2012-01-31 24 views
11

嗨,我是新來的CI和離子認證,我想找到最好的方式來獲取登錄的用戶的用戶名和使它是一個字符串。我嘗試了這一點,即時通訊得到一個錯誤。Codeigniter ion auth嘗試獲取登錄用戶的用戶名到一個字符串

類CI_Email的對象無法轉換爲字符串

這是我的控制器

class Dashboard extends CI_Controller { 

    function index() { 
     $user = $this->ion_auth->user(); 
     $email = $user->email; 

     $data['email']= $email; 
     $data['mainContent'] = 'dashboard_view'; 
     $this->load->view('template', $data); 
    } 

,並查看

<div id='dashboarWap'> 
    <?php echo form_open('dashboard/dashInput'); ?> 

    <?php echo $email; ?> 

爲什麼我收到此錯誤的任何想法將是一個大幫忙謝謝。

回答

14

$this->ion_auth->user()是一個DB對象。

$this->ion_auth->user()->row();返回您可以查詢first_name,number_of_cats_owned或其他的用戶對象。

https://github.com/benedmunds/CodeIgniter-Ion-Auth/blob/2/controllers/auth.php

+1

耶曾說出來大家幫忙貼笑感謝還只是前 – 1ftw1 2012-02-01 01:30:59

+2

擁有的貓的數量是一個好主意。我將開始將它存儲在我的數據庫LOL中。 – 2013-11-13 20:21:41

12

離子身份驗證設置用戶名,電子郵件,用戶名和最後登錄時間在會話變量時,在用戶登錄(看看在ion_auth_model's登錄功能LN 683 ISH)

得到這個信息的最簡單方法是使用CI's session class像這樣:

$username = $this->session->userdata('username'); 

當然,我一個B使用助手所以做出這個就更簡單了,我會常使用的這種變體helper function

function userdata($key, $val = null){ 
    $ci = &get_instance(); 
    if ($val !== null){ 
    $ci->session->set_userdata($key, $val); 
    } else { 
    return $ci->session->userdata($key); 
    } 
} 

這給了我們一個方便的(&全球範圍的)功能根據需要呼籲,任何需要的地方:

$username = userdata('username'); 
+0

注意幫助函數,記得把它包裝在存在檢查中。還要注意,涉及'set_userdata'的重載並不是最好的,因爲你現在不能將變量設置爲'null' - 它的折衷很少影響到我,所以我隨它去做。 – Louis 2012-02-01 12:10:01

0

離子權威性已通過

$this->data['users'] = $this->ion_auth->users()->result(); 

您可在AC傳遞登錄用戶的任何數據

$this->ion_auth->user()->row_array(); 

對於GET對象數據:做這個

foreach ($users as $value) { 
    echo $value->first_name. " " . $value->last_name; 
} 
0

對於GET數組數據塞斯用戶名

$this->ion_auth->user()->row();