如何在yii中设置会话变量的默认值?

时间:2013-11-08 10:35:29

标签: yii

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

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变量设置deafult值。我需要知道正确的方法。仅添加$this->setState('username', "");

是否正确

2 个答案:

答案 0 :(得分:1)

尝试:

Yii::app()->user->getState('username', $default_val);

答案 1 :(得分:0)

是的,您可以使用

执行此操作
$this->setState('username', "");

但您没有理由这样做,因为只有当用户提供了用户名时才会执行 else 子句。 如果要验证该用户是否为guest,请使用:

Yii::app()->user->isGuest