我是Yii框架的新手。我在Yii论坛上问过这个问题,但没有得到任何好的结果,所以我来到这里。实际上,我想显示最后登录时间,当管理员将登录。它在Yii用户模块中可用。那么怎么做呢?是否有可能从用户模块到索引页获得该时间。如有任何帮助和建议,我将不胜感激。
(更新)我按照这个链接,我做了这样的Useridentity代码,按照指令:
class UserIdentity extends CUserIdentity
{
private $_id;
public function authenticate()
{
$user=User::model()->findByAttributes(array('username'=>$this->username));
if($user===null)
$this->errorCode=self::ERROR_USERNAME_INVALID;
else if($user->password!==md5($this->password))
$this->errorCode=self::ERROR_PASSWORD_INVALID;
else
{
$this->_id=$user->id;
$this->setState('lastLoginTime', $user->lastLoginTime);
$this->errorCode=self::ERROR_NONE;
}
return !$this->errorCode;
}
public function getId()
{
return $this->_id;
}
}
现在我必须在视图文件中调用id
和lastlogin
,以便我可以获得最后登录时间。所以我在视图文件中使用了这段代码。
<?php echo Yii::app()->user->name;?>
<?php echo Yii::app()->user->lastLoginTime;?>
在所有的更改之后,我得到的错误如下:
Property "CWebUser.lastLoginTime" is not defined.
你可以试试:
Yii::app()->user->last_login = $usermodel->last_login;
$usermodel->last_login = time();
echo "welcome back - your last login was at:".Yii::app()->user->last_login;
你只需要在用户登录时在视图中写入
回声Yii:应用()->用户-> lastLoginTime;
试一试!
不能直接访问通过setState()
赋值的变量
如果你使用setState()
,你必须使用getState()
来获得它:
UserIdentity
$this->setState('lastLoginTime', $user->lastLoginTime);
<<p> 视图/strong> Yii::app()->user->getState('lastLoginTime');
或者您可以添加一个私有属性,如$_id
,并以相同的方式使用它。
这可能听起来很傻,而且都是本着"你试过再次打开和关闭它吗?"的精神,但是根据这条评论,你试过再次注销和登录吗?我怀疑这个变化还没有影响到你的会话,这就是为什么CWebUser.lastLoginTime
还不能访问。参见cweuser .__get()的详细信息。