2012-01-31 22 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();