0

我需要在会话中保留有关用户的一些详细信息。

public function authenticate()
{
    $user=User::model()->findByAttributes(array('username'=>$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->setState('username', $user->username);           
        $this->errorCode=self::ERROR_NONE;
    }
    return !$this->errorCode;
}  

在示例中,我保存了用户名 - $this->setState('username', $user->username);
在我调用的主页中是我第一次$username=Yii::app()->user->username;得到属性“CWebUser.username”未定义。有没有办法为用户名和其他 sessian 变量设置默认值。我需要知道这样做的正确方法。只添加是否正确$this->setState('username', "");

4

2 回答 2

1

尝试:

Yii::app()->user->getState('username', $default_val);
于 2013-11-08T10:40:38.957 回答
0

是的,你可以这样做

$this->setState('用户名', "");

但是您没有理由这样做,因为您的else子句仅在创建具有所提供用户名的用户时才执行。如果要验证该用户是访客,请使用:

Yii::app()->user->isGuest
于 2013-11-08T14:02:06.747 回答