在高级模板中,它显示了如何在成功登录时“触摸”用户记录,但如果登录是通过cookie,则不会调用。
我看过Yii2事件,但对如何包含父母感到困惑。
上的tutuorial以下是GitHub
的来源我知道如何创建自定义函数,我只是不知道如何从afterLogin()方法调用它。
我真的不在乎技术上是否是一个事件,我只需要覆盖本机方法并包含父事件。
答案 0 :(得分:2)
this github post中描述了以下方法。
创建一个实现引导程序接口的类,我做了:
<?php
namespace app\bootstraps;
use yii\base\BootstrapInterface;
class AppBootstrap implements BootstrapInterface{
public function bootstrap($app){
$app->user->on(\yii\web\User::EVENT_BEFORE_LOGIN,['app\models\user\User', 'beforeLogin']);
$app->user->on(\yii\web\User::EVENT_AFTER_LOGIN,['app\models\user\User', 'afterLogin']);
$app->user->on(\yii\web\User::EVENT_BEFORE_LOGOUT,['app\models\user\User', 'beforeLogout']);
}
}
我已覆盖用户类并在其中添加了相关功能,但您可以引用所需的任何类和功能。
将以下内容添加到您的web.php文件
$config = [
'id' => 'basic',
'name' => 'x',
'basePath' => dirname(__DIR__),
'bootstrap' => [
'log',
'app\bootstraps\AppBootstrap',
],
.....etc
答案 1 :(得分:1)
您可以使用包含父级
放入/app/components/User.php
public function afterLogin($identity, $cookieBased, $duration){
parent::afterLogin($identity, $cookieBased, $duration);
// your code here, such set session
}