我正在使用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'];
}
}
我在此控制器中获取会话值。
但我重定向到另一个控制器。它的会话变量没有保留,而且它的目标就是它。
请提出任何想法。
答案 0 :(得分:0)
我认为此链接可以帮助您: Yii 1.1: Add information to Yii::app()->user by extending CWebUser
度过美好的一天。
基本上是:
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;
}
}
?>