Yii会话变量

时间:2014-07-25 05:21:22

标签: php session yii

我正在使用YII框架中的会话变量。

我在Site controller

中创建了会话变量

就像

一样
public function authenticate()
{
    $user=UserSignupForm::model()->findByAttributes(array('emailid'=>$this->username));
    if($user===null)
        $this->errorCode=self::ERROR_USERNAME_INVALID;
    else if ($user->password!==($this->password))
        $this->errorCode=self::ERROR_PASSWORD_INVALID;
    else {
        $connection=Yii::app()->db;
        $sql="select rolename from rolesinfo where roleid IN (select roleid from     userroles where userid IN (select userid from userinfo where emailid='$user->emailid')) ";
        $command = $connection->createCommand($sql);
        $roles = $command->queryAll();
        // $this->setState('roles',$roles['0']['rolename']);
        // $this->setState('user', $user->username);
        $this->errorCode=self::ERROR_NONE;
        Yii::app()->session['role1']=$roles['0']['rolename'];
        $s=Yii::app()->session['role1'];
    }
}

我在此控制器中获取会话值。

但我重定向到另一个控制器。它的会话变量没有保留,而且它的目标就是它。

请提出任何想法。

1 个答案:

答案 0 :(得分:0)

我认为此链接可以帮助您: Yii 1.1: Add information to Yii::app()->user by extending CWebUser

度过美好的一天。

基本上是:

  1. 按会话列出ID:Yii 1.1: How to add more information to Yii::app()->user
  2. create class WebUser在组件或其他可见文件夹中扩展CWebUser,如下所示:
  3. class WebUser extends CWebUser {
    
      // Store model to not repeat query.
      private $_model;
    
      // Return first name.
      // access it by Yii::app()->user->first_name
      function getFirst_Name(){
        $user = $this->loadUser(Yii::app()->user->id);
        return $user->first_name;
      }
    
      // Return first name.
      // access it by Yii::app()->user->first_name
      function getRole1(){
        $user = $this->loadUser(Yii::app()->user->id);
        #find role
        return $role; #return role
      }
    
      // Load user model.
      protected function loadUser($id=null)
        {
            if($this->_model===null)
            {
                if($id!==null)
                    $this->_model=User::model()->findByPk($id);
            }
            return $this->_model;
        }
    }
    ?>