最好的地方是在处理身份的类中yii/web/User
;通常,这是common/models/User
.
在该类中,您可以进行以下初始化。
public function registerLogoutHook()
{
$this->on(\yii\web\User::EVENT_AFTER_LOGOUT, function ($e) {
Yii::$app->controller->goHome();
});
}
您可以选择在网络上注册成功登录的用户对象[身份`common/models/User]。逻辑如下
// [ ... omitted code ... ]
// $model is an instance of LoginForm
if ($model->load(Yii::$app->request->post()) && $model->login()) {
Yii::$app->user->identity->registerLogoutHook();
return $this->redirect(['customers/view', 'id' => Yii::$app->user->identity->id]);
}
// [ ... omitted code ... ]
EDIT (:
目前使其正常工作的另一种方法(“yiisoft/yii2”:“2.0.7”)是将事件处理程序添加到您的配置文件中。这样,所有处理程序就可以在应用程序生命周期的早期进行设置。
所以在你的main.php
你会回来的...
[
// ... some other things ...
'components' => [
// ... some other components ...
'user' => [
// ... some configuration for yii\web\User ...
'on beforeLogout' => function ($e) {
Yii::trace('Logout events are working!!!');
},
// ... more configurations for yii\web\User ...
],
// ... some more components ...
],
// ... some more things
]
对于处理程序,您可以使用回调、函数名称或指定要调用的对象及其方法的数组。这里列举了这些注册事件的方法 http://www.yiiframework.com/doc-2.0/guide-concept-events.html#attaching-event-handlers.
beforeLogout
可以更改为引发的任何事件yii\web\User