我在UserIdentity类中添加了getId方法来获取用户ID而不是用户名,但它不会获取用户ID。添加此getId方法后,以下两个都将导致为空
1. Yii::app()->user->getId();
2. Yii::app()->user->id;
我在这里发布了UserIdentity类,请帮忙解决这个问题
class UserIdentity extends CUserIdentity
{
private $_id;
public function authenticate()
{
$users= User::model()->findByAttributes(array('name'=>$this->name));
$password= User::model()->findByAttributes(array('password'=>$this->password));
if($users===null) {
$this->errorCode = self::ERROR_USERNAME_INVALID;
}
else if($password===null) {
$this->errorCode = self::ERROR_PASSWORD_INVALID;
}
else {
$this->_id=$users->id;
$this->errorCode = self::ERROR_NONE;
}
return !$this->errorCode;
}
public function getId()
{
return $this->_id;
}
}
我尝试使用CDbCriteria从用户模型获取id,它只获取usename列,id列将变为空
答案 0 :(得分:4)
这是一个很好的解决方案:
检查以下步骤:
执行此步骤后,请调用此方法:Yii::app()->user->id;
Yii::app()->user->name;
Yii::app()->user->email;
答案 1 :(得分:3)
您可以使用其他方法设置用户ID
else {
$this->_id=$users->id;
$this->setState('user_id', $users->id);
$this->errorCode = self::ERROR_NONE;
}
并像这样打电话
Yii::app()->user->user_id;