Php Codeigniter ion auth试图将登录用户的用户名获取到字符串中

Php Codeigniter ion auth试图将登录用户的用户名获取到字符串中,php,codeigniter,Php,Codeigniter,大家好,我是CI和ion auth的新手,我想找到最好的方法来获取登录用户的用户名并将其设置为字符串。我尝试了这个,我得到了一个错误 类CI_电子邮件的对象无法转换为字符串 这是我的控制器 class Dashboard extends CI_Controller { function index() { $user = $this->ion_auth->user(); $email = $user->email;

大家好,我是CI和ion auth的新手,我想找到最好的方法来获取登录用户的用户名并将其设置为字符串。我尝试了这个,我得到了一个错误

类CI_电子邮件的对象无法转换为字符串

这是我的控制器

 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\u auth->user()
是一个DB对象


$this->ion\u auth->user()->row()返回用户对象,您可以查询该对象的名字、拥有的猫的数量或其他信息


当用户登录时,Ion Auth在会话变量中设置用户名、电子邮件、用户id和上次登录时间(查看登录函数中的ln 683 ish。)

获取此信息的最简单方法是使用如下:

$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 );
  }
}
这为我们提供了一个方便的(&global scoped)函数,可以根据需要在任何需要时调用:

$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;

是的,在你发布lol之前就解决了这个问题。谢谢你的帮助。拥有多少只猫是个好主意。我将开始将其存储在我的数据库LOL.NB中的helper函数中,记住将其包装在一个exists检查中。还要注意的是,涉及
set_userdata
的重载不是最好的,因为您现在无法将变量设置为
null
——这是一个很少影响我的权衡,所以我选择了它。