在 Yii 2 中监听注销事件

2023-12-31

所以我知道Yii::$app->user在注销过程中触发这些事件。

const EVENT_BEFORE_LOGIN = 'beforeLogin';
const EVENT_AFTER_LOGIN = 'afterLogin';

但是在每个请求的开头添加侦听器的正确位置在哪里?


最好的地方是在处理身份的类中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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 Yii 2 中监听注销事件 的相关文章

  • Cycle2 初始化事件未触发

    我使用 Cycle2 作为基本的轮播 我的幻灯片项目有时在其数据中包含一个 url 因此我必须使用 Cycle2 api 事件来使用该 url 当它存在时 我的问题是 虽然 cycle after 事件触发正常 但初始化事件都不会触发 因此
  • Yii2:使用 Pjax POST 方法和分页在 Gridview 中搜索

    我是 yii2 的初学者 尝试在搜索按钮上使用 Pjax 来搜索 Gridview 中的字段 我已经使用 GET 方法完成此操作 但我想使用 POST 方法完成此操作 那么我该如何使用 Yii2 Pjax post 方法 和分页来做到这一点
  • 为什么不推荐使用本机 Visual C++ 中的事件处理?

    http msdn microsoft com en us library ee2k0a7d aspx http msdn microsoft com en us library ee2k0a7d aspx 还支持事件处理 本机 C 类 C
  • WPF:鼠标按下时不会触发鼠标离开事件

    我遇到鼠标进入 离开事件的问题 当按下鼠标按钮并按住光标在控件内 然后光标以足够快的速度移出控件时 此事件不会触发 你能告诉我为什么会这样吗 有什么方法可以正确获取这些事件吗 请检查示例项目以查看其实际效果 https www dropbo
  • Java检测鼠标长按

    如果用户按下 JList 组件超过 3 秒 有什么方法可以捕获事件吗 我发现困难的部分是即使在用户松开鼠标左键之前也需要触发事件 这可以通过 mousePressed 和 mouseReleased 组合轻松完成 您可以在 mouseDow
  • 在事件聚合器中混合枚举与事件类

    我最近尝试实现自己的简单事件聚合器 我从 MSDN 上的事件聚合器文章中获得了很多灵感 关于 MSDN 上的事件聚合器 我注意到一件事是事件实际上是它们自己的类 这根本不是一件坏事 然而 我只是觉得总是为每个小事件创建一个新的空类很尴尬 我
  • 如何将 yii2 Restful api 中两个表的关系数据显示为 json 格式

    我遇到了将两个表中的数据显示为 JSON 格式并在 yii2 Restful api 上工作的问题 这是我的结构数据库 TABLE volunteer volunteer id int 11 NOT NULL auto increment
  • 如何将事件侦听器与“请求”事件结合起来?

    我为终端编写了一个简单的小迷宫游戏 它反复要求用户做某事 例如 您想朝哪个方向走 N E S W 我有一个navigate 方法在循环中运行 触发这些问题 存储答案并根据答案执行某些操作 public enum Dir N E S W pu
  • yii2 更新后返回上一页

    更新记录后如何将用户重定向到上一页 这是典型的场景 用户在索引页面中过滤结果或对记录进行分页 然后找到想要编辑的记录并单击编辑按钮 他们更新该记录的数据 一旦单击 更新 按钮 他们将被重定向到索引视图 但具有先前选择的过滤器 页面 更新后我
  • WPF 列表框 + 扩展器事件

    我在列表框的 ItemTemplate 中有一个 Expander 渲染得很好 我遇到的问题是 我希望在展开和 或选择扩展器时触发 ListBox SelectionChanged 事件 MouseDown 事件似乎没有冒泡到 ListBo
  • Javascript hasOwnProperty 在事件对象上总是 false?

    我希望有人可以帮助澄清与事件对象相关的 hasOwnProperty 方法 我正在尝试克隆鼠标事件 最终该对象将被传递到 iframe 我已经构建了一个 克隆 函数 但每当我尝试克隆窗口事件 即滚动 单击等 时 hasOwnProperty
  • Yii2 从 MySQL 中的表登录的分步指南

    我开始在 Yii2 中迈出第一步 到目前为止 我已经能够编写一个应用程序并将数据库中的表连接到它 就像我在 Yii1 中学到的那样 该表是contacts我的创建视图中的表单将数据发送到数据库 没有任何问题 问题是我只能在 Yii2 内置的
  • AttachEvent 或 addEventListener - 存储在哪里?

    在 jQuery 中 如果我这样做 a click function Do something 点击事件存储在 a data events 我可以像这样获取它 jQuery each a data events function i eve
  • 我能否找出 ASP 回发时将触发哪些控制事件?

    是否有可能在发生之前获取将要触发的控制事件列表 例如在Page Load处理程序 例如 如果单击了一个按钮 我可以在button click事件处理程序被调用 您选择了一个非常棘手的问题 原因是事件触发的方式有多种 1 EVENTTARGE
  • 跟踪滚动位置并通知其他组件

    有没有一种简单的方法来跟踪浏览器滚动位置并通知多个组件 用例 在滚动时 我希望能够根据我所在的位置更改页面上各种元素的类 在 Angular 的早期版本中 通过插件可以实现这一点 对于 jQuery 也是如此 当然 可以选择编写裸 JS 在
  • 如何同时订阅引发的事件和打印?

    我一直在开发一个程序 该程序有 3 个类 其中 2 个类具有以不同间隔重复的计时器 一旦计时器的一个 周期 完成 它就会引发一个带有字符串作为返回的事件 第三类订阅来自其他两个计时器类的事件并将它们打印到屏幕上 效果很好 但我的问题是它是分
  • ZF2 查看攻略

    我正在尝试执行以下操作 简单的控制器和动作 Action 应根据请求返回 2 种类型的响应 HTML in case of ordinary request text html JSON in case of ajax request ap
  • 是否可以删除Android日历事件

    我正在使用 Android 日历 如何使用代码删除日历事件 是否可以 为了澄清起见 我想提一下 我不想要同步过程或想要使用 gdata api 删除事件 我只想删除本地日历事件 尝试使用事件 ID 的 Uri 删除事件 Uri uri UR
  • Yii2 异常:ApcCache 需要加载 PHP apc 扩展

    在高级模板前端的主配置中配置缓存组件时 我收到异常 在我的 php ini 上启用了扩展 rsults 如何解决此问题 前端 config main php cache gt class gt yii caching ApcCache ke
  • 当我在 yii2 中使用 findbysql 查询时排序和搜索列

    我正在搜索四个表并将它们连接起来并得到我想要的输出 但无法对输出进行排序或过滤 请告诉我如何按地区或销售范围或收集范围搜索它 PartySearch 模型是

随机推荐