Codeigniter离子身份验证尝试将登录用户的用户名获取到字符串中


Codeigniter ion auth trying to get the user name of a logged in user in to a string

嗨,团队,我是CI和离子身份验证的新手,我想找到获得登录用户的用户名并使其成为字符串的最佳方法。我试过这个,但我犯了一个错误。

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

任何关于我为什么会出现这个错误的想法都将是一个很大的帮助,谢谢。

$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

Ion Auth设置用户登录时会话变量中的用户名、电子邮件、用户id和上次登录时间(请查看Ion_Auth_model的登录功能中的ln 683 ish。)

获取此信息的最简单方法是使用CI的会话类,如下所示:

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

当然,我滥用助手,所以为了更简单,我通常会使用助手函数的变体

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' );

Ion auth已经通过传递登录用户的任何数据

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

你可以通过这个访问用户名

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

获取数组数据:

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

用于获取对象数据:

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

简单到:

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