> 백엔드 개발 > PHP 튜토리얼 > YII2怎么自动更新上次登录时间

YII2怎么自动更新上次登录时间

PHPz
풀어 주다: 2020-06-28 09:58:00
원래의
1666명이 탐색했습니다.

YII2怎么自动更新上次登录时间

YII2怎么自动更新上次登录时间?

提出问题:

发现Yii2有afterLogin和beforLogin两个方法(事件),但是不知道怎么才能使用。

在User模型我已经写了如下代码:

public function behaviors()
    {
        return [
            'timestamp' => [
                'class' => TimestampBehavior::className(),
                'attributes' => [
                    ActiveRecord::EVENT_BEFORE_INSERT => ['created_at', 'activated_at', 'updated_at'],
                    ActiveRecord::EVENT_BEFORE_UPDATE => 'updated_at'
                ],
            ]
        ];
    }
로그인 후 복사

因为ActiveRecord里只有数据库增删改查的事件,把yii\web\User::EVENT_AFTER_LOGIN加在这儿也没用。。。

解决办法:

首先明确两点
* 你的User Model是继承自 ActiveRecord
* afterLogin 和 beforeLogin 是 yii\web\User 的两个事件

那么你把 yii\web\User 的两个事件挂载在 User Model 肯定不会去触发了。

那么就可以通过配置来解决,我们知道,配置是支持事件挂载的;
例如:

'components' =>[
    ...
    'user' => [
        'identityClass' => 'common\models\User',
        'enableAutoLogin' => true,
        'on beforeLogin' => function($event) {
            $user = $event->identity; //这里的就是User Model的实例了
            $user->last_login_at = time();
            $user->save();
            ...
        },
        'on afterLogin' => function($event) {
            //the same
        }
    ],
    ...
]
로그인 후 복사

更多相关技术知识,请访问PHP中文网

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿