我有一个问题,可能是个小问题,但我找不到解决方案。Yii:app()->user->getId()或Yii:app->user->id未返回值。它只是返回空结果。但是我已经在UserIdentity类中设置了id。
在我的UserIdentity类中,我有这个
public function getId()
{
return $this->id;
}
我正在authenticate()函数中设置id。如果我自己显示在那里,它显示的是id,但不是在getId()函数中。请帮我一下。
提前谢谢。
Dhanendran Rajagopal。
像这样重构getId()函数!
public function getId(){
return $this->getState('id');
}
当您在标识中设置用户状态时,就会出现此问题。您尝试设置状态,然后获取属性!
不确定您是否使用标准UserIdentity类,但在标准中,id
是私有属性,在Yii约定中,私有属性前面有_
,所以它会是这样的:
public function getId()
{
return $this->_id;
}
由于它是私有变量,您无法使用Yii::app()->user->_id
访问它。getId()
函数是一个神奇的函数,当您运行Yii::app()->user->id
时,它会发现没有id
属性,因此会查找一个名为getId()
的函数,并在它存在的情况下运行它。
如果你使用的是标准类,你需要改变它,正如你在下面的评论中所说:
$this->_id = $user->user_id //underscore added before id