2011-12-29 45 views
0

我是Yii框架的新手。我在Yii论坛上问过这个问题,但没有得到任何好的结果,所以我来到了这里。其实我想在管理员登录时显示上次登录时间。它在Yii用户模块中可用。那么该怎么做。是否有可能从用户模块到索引页面获得这些时间?任何帮助和建议都将非常可观。在Yii框架中获取最后登录时间

[更新]

我跟着this link,我犯了这样的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; 
    } 
} 

现在我要打电话idlastlogin鉴于文件,这样就可以得到lastlogin time.So我已经在视图文件中使用了这段代码。

<?php echo Yii::app()->user->name;?> 
<?php echo Yii::app()->user->lastLoginTime;?> 

所有更改后,我得到了像错误:

Property "CWebUser.lastLoginTime" is not defined. 

回答

3

你可以试试这个:

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; 
+0

我在视图文件中做了它,但它显示了像这样的错误解析错误:语法错误,意外的T_VARIABLE。 – NewUser 2011-12-30 08:29:38

0

你只需要写在你看来,当用户登录

echo Yii :: app() - > user-> lastLoginTime;

试试吧!

0

如果您正在使用setState()你必须使用getState()得到它,你不能访问通过setState()直接

赋值的变量:

的UserIdentity

$this->setState('lastLoginTime', $user->lastLoginTime); 

视图

Yii::app()->user->getState('lastLoginTime'); 

或者您可以添加一个像$_id这样的私人财产,并以同样的方式使用它。 (我推荐它!)

+0

这是无稽之谈。 'CWebUser'以覆盖'__set()'方法的方式来检查会话内容。 – DaSourcerer 2013-11-27 13:51:52

0

这可能听起来很愚蠢,并且都是本着“你试过打开还是关闭?”的精神,但根据this comment,你是否尝试过注销并重新登录?我怀疑这个变化并没有影响你的会话,这就是为什么CWebUser.lastLoginTime无法访问。另请参阅CWebUser.__get()的详细信息。