beforeLogout 是 yii\web\User 的事件,如果想触发这个事件,可以把该事件挂载到配置文件中,
因为配置是支持事件挂载的
'components' => [
'user' => [
'identityClass' => 'backend\models\AdminUser',
'enableAutoLogin' => true,
'on beforeLogout' => function($event){ //挂载beforeLogout事件
$adminUser = $event->identity;<span style="white-space:pre"> </span> //AdminUser模型的实例
$adminUser->setScenario('beforeLogout'); //(自定义)设置验证规则指定场景
$adminUser->last_login_time = time();
$adminUser->last_login_ip = Yii::$app->request->userIP;
$adminUser->update();
}
],
]
注:因为AdminModel是AR,所以如果将yii\web\User的事件加载到Model中是不会触发的。
yii2 常用的before和after事件:
beforeAction | afterAction | 方法 前后被调用的方法 |
beforeFilter | afterFilter | 过滤 前后被调用的方法 |
beforeRender | afterRender | 输出 前后被调用的方法 |
beforeValidate | afterValidate | 校验 前后被调用的方法 |
beforeSave | afterSave | 这两个将在保存 AR 实例之前和之后被调用 |
beforeDelete | afterDelete | 这两个将在一个 AR 实例被删除之前和之后被调用 |
beforeLoad | afterLoad | Integrity 开关 before为false after为true |
beforeUnload | afterUnload | Integrity 开关 before为false after为true |
beforeSend | afterSend | 邮件发送前后被调用的方法 |
beforeLogin | afterLogin | 用户成功登录前后被调用的方法 |
beforeLogout | afterLogout | 用户成功登出前后被调用的方法 |