Codeigniter ion auth пытается получить имя пользователя, вошедшего в систему, в строку - PullRequest
13 голосов
/ 01 февраля 2012

Привет, команда! Я новичок в CI и 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; ?>

Любая идея о том, почему я получаю эту ошибку, будет большой помощью, спасибо.

Ответы [ 5 ]

16 голосов
/ 01 февраля 2012

$this->ion_auth->user() - это объект БД.

$this->ion_auth->user()->row(); возвращает пользовательский объект, который вы можете запросить по имени, по имени, по номеру_cats_owned или как угодно.

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

13 голосов
/ 01 февраля 2012

Ion Auth устанавливает имя пользователя, адрес электронной почты, идентификатор пользователя и время последнего входа в систему в переменных сеанса, когда пользователь входит в систему (посмотрите на ln 683 ish при ion_auth_model's *1003* входе в системуfunction.)

Самый простой способ получить эту информацию - использовать класс сеанса 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 );
  }
}

Это дает нам удобный (& global scoped) функция для вызова по мере необходимости, где это необходимо:

$username = userdata( 'username' );
0 голосов
/ 18 июля 2019

так же просто, как:

$this->ion_auth->user()->row()->username;
0 голосов
/ 23 июня 2017

Для получения данных массива:

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

Для получения данных объекта:

$this->ion_auth->user()->row();
0 голосов
/ 03 апреля 2017

Ion auth уже передает любые данные вошедшему в систему пользователю через

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

Вы можете получить доступ к имени пользователя, сделав это

foreach ($users as $value) {
    echo $value->first_name. " " . $value->last_name;
} 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...