Codeigniter ion auth试图将登录用户的用户名输入到字符串中

1ft*_*tw1 13 php codeigniter

嗨团队我是CI和离子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);
    }
Run Code Online (Sandbox Code Playgroud)

并查看

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

    <?php echo $email; ?>
Run Code Online (Sandbox Code Playgroud)

任何关于我为什么会收到此错误的想法都将是一个很大的帮助,谢谢.

小智 16

$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

  • 拥有的猫数是个好主意.我将开始在我的数据库LOL中存储它. (2认同)

Lou*_*uis 13

当用户登录时,Ion Auth会在会话变量中设置用户名,电子邮件,用户ID和上次登录时间(请查看ion_auth_model登录功能中的ln 683 ish .)

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

$username = $this->session->userdata( 'username' );
Run Code Online (Sandbox Code Playgroud)

当然,我滥用帮助器,以使这更简单,我通常会使用这个辅助函数的变体:

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

这为我们提供了一个方便(和全局范围)的功能,可以根据需要随时调用:

$username = userdata( 'username' );
Run Code Online (Sandbox Code Playgroud)