Yii使用用户标识对象在视图中显示用户类型

时间:2014-02-10 03:25:22

标签: php yii

在我的网络应用程序中,我需要在protected/views/layouts/main.php的视图中显示用户的类型。

但是我收到了这个错误:

"CException" ."Property "CWebUser.type" is not defined."

我无法摆脱此错误,如何解决此问题?

我正在使用这行代码来显示用户类型

array('label'=>'Logout ('.Yii::app()->user->type.')', 'url'=>array('/site/logout'), 
'visible'=>!Yii::app()->user->isGuest)

我尝试使用user-> user_type但是没有工作

我的UserIdentity class

代码
class UserIdentity extends CUserIdentity
{
    private $_id;


    public function authenticate()
    {
        $user = User::model()->findByAttributes(array(
                'email'=>$this->username));
        if ($user === null) {

            $this->errorCode=self::ERROR_USERNAME_INVALID;
        } else if ($user->pass !==
        hash_hmac('sha256', $this->password,
                Yii::app()->params['encryptionKey']) ) {

            $this->errorCode=self::ERROR_PASSWORD_INVALID;
        } else { 
            $this->errorCode=self::ERROR_NONE;
            $this->setState('type', $user->user_type);
            $this->setState('id', $user->id);
            $this->_id = $user->id;

        }
        return !$this->errorCode;

    }

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

    }

}

此外,由于我使用基于角色的访问控制,因此我更改了user.php中的代码,以便为用户分配角色

我的代码分配用户类型。

public function afterSave() {
        if (!Yii::app()->authManager->isAssigned(
                $this->type,$this->id)) {
            Yii::app()->authManager->assign($this->type,
            $this->id);
        }
        return parent::afterSave();
        }

我在SiteController中使用此代码为用户分配角色

$auth->assign($user->type,$user->id);

1 个答案:

答案 0 :(得分:1)

如果我;对于正在发生的事情,你可能有时没有登录Yii试图访问用户设置。由于您尚未登录,因此无法访问它们,因此出现错误。所以在标签中,检查用户isset()

'label' => (isset(Yii::app()->user->type) ? Yii::app()->user->type : '')