Yii :: приложение () -> user-> идентификатор;получает имя пользователя, а не ID - PullRequest
14 голосов
/ 21 декабря 2011

Я пытаюсь получить идентификатор пользователя, но пока не получается ...

echo Yii::app()->user->id;

и

echo Yii::app()->user->getId();

вернуть имя пользователя, что странно. Есть идеи, что не так?

Ответы [ 5 ]

9 голосов
/ 21 декабря 2011

Yii :: app () -> пользователь возвращает компонент CWebUser по умолчанию.

Если вы хотите получить дополнительную информацию о пользователе, вам необходимо расширить этот компонент.

Создайте файл WebUser.php в папке components.(мой пример ниже)

class WebUser extends CWebUser {
    /**
     * Gets the FullName of user
     *
     * @return string
     */
    public function getFullName()
    {
        return $this->_model->first_name . ' ' .$this->_model->last_name;
    }
}

В вашем конфигурационном файле найдите раздел

'components'=>array(
'user'=>array(
'class'=>'WebUser'
)
)

, если этого раздела нет, просто создайте его.И измените 'class' => на WebUser '.

8 голосов
/ 21 декабря 2011

у вас должна быть функция getId в идентификаторе пользователя

2 голосов
/ 20 марта 2014

Или вы можете использовать setState:

class UserIdentity extends CUserIdentity
{
    private $_id;
    public function authenticate()
    {
        $record=Users::model()->findByAttributes(array('mail'=>$this->username));
        if($record===null)
            $this->errorCode=self::ERROR_USERNAME_INVALID;
        else if($record->password!==md5($this->password."325"))
            $this->errorCode=self::ERROR_PASSWORD_INVALID;
        else
        {
            $this->_id = $record->id;
            $this->setState('role', $record->active);
            $this->setState('mail', $record->mail);
            $this->setState('name', $record->name);
            $this->setState('surname', $record->surname);
            $this->setState('mobile', $record->mobile);
            $this->setState('adress', $record->adress);
            $record->count_login += 1;
            $record->update();
            $this->errorCode=self::ERROR_NONE;
        }
        return !$this->errorCode;
    }

    public function getId()
    {
        return $this->_id;
    }

}


<?php echo Yii::app()->user->name." ".Yii::app()->user->surname; ?>
1 голос
/ 04 июля 2013

Используйте функцию getid в Component / Useridentity для получения идентификатора и имени пользователя и т. Д.

class UserIdentity extends CUserIdentity
    {

            private  $_id;
        public function authenticate()
        {
           $users=Users::model()->find("email_id='$this->username'");                  

           $this->_id=$users->user_id;

        }

        public  function getId(){
            return $this->_id;

    }
}
0 голосов
/ 08 декабря 2015

, если вы хотите отобразить его в представлениях, это должно сделать:

echo Yii::$app->user->id;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...