Yii2在afterLogin()方法中包含函数吗?

时间:2015-04-20 20:11:05

标签: class events login yii2

在高级模板中,它显示了如何在成功登录时“触摸”用户记录,但如果登录是通过cookie,则不会调用。

我看过Yii2事件,但对如何包含父母感到困惑。

这是StackOverflow

上的tutuorial

以下是GitHub

的来源

我知道如何创建自定义函数,我只是不知道如何从afterLogin()方法调用它。

我真的不在乎技术上是否是一个事件,我只需要覆盖本机方法并包含父事件。

2 个答案:

答案 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
   }