如何理解yii2的 Event?全局绑定,特别疑惑

发布于 2022-09-01 07:32:39 字数 864 浏览 36 评论 0

疑惑不解

这一段的内容 https://github.com/yiisoft/yii2/blob/master/docs/guide/concept-events....,里面一直在不断的强调说事件Event的绑定:

php$foo = new Foo;

// this handler is a global function
$foo->on(Foo::EVENT_HELLO, 'function_name');

// this handler is an object method
$foo->on(Foo::EVENT_HELLO, [$object, 'methodName']);

// this handler is a static class method
$foo->on(Foo::EVENT_HELLO, ['app\components\Bar', 'methodName']);

// this handler is an anonymous function
$foo->on(Foo::EVENT_HELLO, function ($event) {
    // event handling logic
});

问题是

1)这一段代码是放在哪里?放在 public function actionXXX(){}里面吗?
2)我想让除admin的action之外的网站里面所有action在执行前都进行对会员是否登录,已登录会员是否已经创建了日志的检测,如何实现这个?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

停滞 2022-09-08 07:32:39
  • 可以放在执行 Yii::$app->user->login() 执行前进行绑定
  • 如果全局绑定的话,可以放在bootstrap中进行绑定,例如:

\yii\base\Event::on(\yii\web\User::className(), \yii\web\User::EVENT_BEFORE_LOGIN, function($event) { //your logic });
陈独秀 2022-09-08 07:32:39

作为 __FresHmaN 的一个补充:

  • 在 advanced-template 中可以在 @app/config/bootstrap.php 中进行绑定, 也可以用下面的方法;
  • 在 basic-template 中可以在 web.php 中设置 Yii::$app->bootstrap;
  • 也可以在 basic-template config 中自行创建 bootstrap_what_ever.php, 并在 web/index.php 中调用。
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文