您將在Yii2框架中添加'last seen'更新?我不能在LoginForm :: login()中做到這一點,因爲我希望每次用戶加載頁面時都要更新它。Yii2實現'Last Last Seen'更新
任何提示?
您將在Yii2框架中添加'last seen'更新?我不能在LoginForm :: login()中做到這一點,因爲我希望每次用戶加載頁面時都要更新它。Yii2實現'Last Last Seen'更新
任何提示?
創建一個應用程序下/組件文件夾名爲「Controller.php這樣」組件,
<?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"]);
}
}
}
現在,在你的應用程序中使用的所有控制器必須延長「控制器」的組成部分。對於例如,
<?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');
}
}
這樣每一次,當頁面加載,最後看到的時間將被設置。
由於用戶未輸入值,因此可以跳過驗證,只應更新'last_seen',即'$ user-> save(false,[「last_seen」])''。 +1 – topher
我已經更新了答案 –
不好的例子,在配置文件中添加'on beforeAction'的變體 –
樣 「活性」 FILD添加到用戶表
添加在配置代碼:
'components'=>[
....
],
'on beforeAction' => function(){
if(!Yii::$app->user->isGuest){
\common\models\User::updateAll(['activity'=>time()],['id'=>Yii::$app->user->id]);
}
},
你有類類似WEBUSER在保護/組件?在負責用戶授權的課程中進行。 –
這是在Yii 1.x中的方式,你是否建議創建一個從用戶模型擴展的組件並將其用作身份驗證類? –