Yii2实现' User Last Seen'更新

时间:2015-04-12 13:42:28

标签: yii2

你会在哪里添加一个最后一次见过的'更新Yii2框架?我无法在LoginForm :: login()中执行此操作,因为我希望每次用户加载页面时都更新它。

任何提示?

2 个答案:

答案 0 :(得分:2)

创建一个名为" Controller.php"的组件。在app / components文件夹下,

<?php

namespace app\components;
use Yii;
use app\models\User;

class Controller extends \yii\web\Controller 
{
    public function init()
    {
        parent::init();

        if (!Yii::$app->user->isGuest) {
            // Code to Set the last seen time for the user. For eg,
            $user = User::findOne(Yii::$app->user->id);
            $user->last_seen = date('Y-m-d H:i:s');
            $user->save(false, ["last_seen"]);
        }
    }
}

现在,您应用中使用的所有控制器都必须扩展&#34;控制器&#34;零件。例如,

<?php

namespace app\controllers;

use Yii;
use app\components\Controller; //Instead of yii\web\Controller

class SiteController extends Controller
{
    public function actionIndex()
    {
        return $this->render('index');
    }
}

这样,每次加载页面时,都会设置上次看到的时间。

答案 1 :(得分:1)

将“activity”之类的fild添加到用户表

添加配置代码:

    'components'=>[
....
    ],
    'on beforeAction' => function(){
      if(!Yii::$app->user->isGuest){
        \common\models\User::updateAll(['activity'=>time()],['id'=>Yii::$app->user->id]);
      }
    },