1 回答
TA贡献1820条经验 获得超2个赞
最好的方法是利用扩展提供的事件。如果您查看FormEvents,您会在SecurityController标题下看到以下内容
FormEvent::EVENT_BEFORE_LOGIN: 在用户登录系统之前发生
FormEvent::EVENT_AFTER_LOGIN:在用户登录系统后发生
所以你需要做的是定义一个事件并在那里添加你的代码,文档说events.php在你的config文件夹中创建一个命名的文件,然后将它加载到你的入口脚本中。
以下是为 设置事件的示例SecurityController:
<?php
// events.php file
use Da\User\Controller\SecurityController;
use Da\User\Event\FormEvent;
use yii\base\Event;
Event::on(SecurityController::class, FormEvent::EVENT_AFTER_LOGIN, function (FormEvent $event) {
$form = $event->getForm();
// ... your logic here
});
然后最后一部分是在你的入口脚本中加载这个文件
<?php
defined('YII_DEBUG') or define('YII_DEBUG', true);
defined('YII_ENV') or define('YII_ENV', 'dev');
require(__DIR__ . '/../../vendor/autoload.php');
require(__DIR__ . '/../../vendor/yiisoft/yii2/Yii.php');
require(__DIR__ . '/../../common/config/bootstrap.php');
require(__DIR__ . '/../config/bootstrap.php');
require(__DIR__ . '/../config/events.php'); // <--- adding events here! :)
$config = yii\helpers\ArrayHelper::merge(
require(__DIR__ . '/../../common/config/main.php'),
require(__DIR__ . '/../../common/config/main-local.php'),
require(__DIR__ . '/../config/main.php'),
require(__DIR__ . '/../config/main-local.php')
);
$application = new yii\web\Application($config);
$application->run();
- 1 回答
- 0 关注
- 151 浏览
添加回答
举报