2016-08-17 4 views
-1

Я новичок в Yii framework, и я хочу получить информацию о пользователе текущего пользователя в системе, например userid, username &, и хочу добавить эти данные в тег заголовка. Я использую базовую версию на Yii.Получить информацию о пользователе в Yii framework

Как я могу получить эту информацию?

+0

вы можете обратиться по этой ссылке для заданной сессии и получить значение сеанса в YII. http://stackoverflow.com/questions/14197462/set-session-in-yii-framework/14197600 –

ответ

-1

Hi Используйте метод setState.

В вашем UserIdentity.php

public function authenticate() 
{ 
    $user=User::model()->find('LOWER(username)=?',array(strtolower($this->username))); 
    if($user===null) 
     $this->errorCode=self::ERROR_USERNAME_INVALID; 
    else if(!$user->validatePassword($this->password)) 
     $this->errorCode=self::ERROR_PASSWORD_INVALID; 
    else 
    { 
     $this->_id=$user->id; 
     $this->username=$user->username; 
     $this->setState("userid",$user->user_id);// set States like this 
     $this->setState("username",$user->username); 
     $this->setState("avatar",$user->avatar); 
     $this->errorCode=self::ERROR_NONE; 
    } 
    return $this->errorCode; 
} 

Теперь в любом месте получить их как

$userid = Yii::app()->user->getState('userid'); 
+0

Это неправильно. Вы можете в любой момент получить доступ к '\ Yii :: $ app-> user-> identity', чтобы получить фактическую модель пользователя. – Twisted1919

+0

Я использую Yii 1.1, и его работы отлично подходят для меня. – user1234

+0

OP говорит: «Я использую базовую версию на Yii.', что означает, что он использует yii2 не 1. – Twisted1919

0

Yii обрабатывает пользовательские данные в сеансе с помощью IdentityInterface. Пошли шаг за шагом.

Вы можете создать класс, назовите его User, который реализует IdentityInterface. Если вы подключены к базе данных, вы можете расширить ее до ActiveRecord, полностью до вашей архитектуры.

class User extends ActiveRecord implements IdentityInterface 
{ 
    ... 
} 

Добавить сведения о конфигурации в файл конфигурации, main.php. Я работаю над предварительным шаблоном, таким образом, он находится в fronted/config. Проверьте его на базовый.

'components' => [ 
    ... 

    'user' => [ 
     'identityClass' => 'common\models\User', 
     'enableAutoLogin' => true, 
     'identityCookie' => ['name' => '_identity-frontend', 'httpOnly' => true], 
    ], 

    .... 
]; 

Сообщает приложению, чтобы получить информацию о сеансе пользователя из общей \ model \ User class. Его общее, поскольку я использую тот же класс для бэкэнд и интерфейса, что не относится к основному шаблону.

Сделать пользователь Войти в приложение

Когда вы получаете объект класса User, с действительным именем пользователя и паролем, используйте следующий код для входа пользователя.

Yii::$app->user->login($user); 

Чтобы получить значение пользователя, имеют следующий образец

Yii :: $ app-> user-> isGuest - Это говорит о том, является ли зарегистрированным пользователем или нет.

Yii :: $ app-> user-> идентификатор - Получить идентификатор пользователя

Yii :: $ app-> user-> использованием личных данных> имя - Yii::$app->user->identity даст вам доступ для всего объекта класса User. Если у вас есть другие атрибуты, используйте идентификатор и получите их. Например, вы можете иметь «аватар», который хранит URL-адрес аватара, вы можете получить его на Yii::$app->user->identity->avatar.

Наконец, чтобы выйти из системы

Yii::$app->user->logout(); 
Смежные вопросы