YII ::应用程序() - >用户>编号;获取用户名而不是ID

时间:2011-12-21 05:51:38

标签: yii

我正在尝试获取用户ID但到目前为止没有运气......

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

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

返回奇怪的用户名。 知道什么是错的吗?

5 个答案:

答案 0 :(得分:9)

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'。

答案 1 :(得分:8)

你应该在用户身份中使用getId函数

答案 2 :(得分:2)

或者您可以使用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; ?>

答案 3 :(得分:1)

  

在Component / Useridentity中使用getid函数来获取用户ID和名称等。

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;

    }
}

答案 4 :(得分:0)

如果你想在视图上显示它应该这样做:

echo Yii::$app->user->id;