你会在哪里添加一个最后一次见过的'更新Yii2框架?我无法在LoginForm :: login()中执行此操作,因为我希望每次用户加载页面时都更新它。
任何提示?
答案 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]);
}
},