我正在尝试理解如何将事件处理程序应用于Yii2应用程序中的事件。通过阅读文档,我相信我可以使用它来触发一个事件。
$this->trigger('failedTransaction');
然而,我试图理解在触发failedTransaction事件时,我将用于运行的处理程序放在哪里。
发布于 2018-08-21 03:31:00
您可以使用class-level events来实现这一点。你可以在你的app bootstrap中(可能在app初始化之前的config中)附加这个:
Event::on(
MyClass::class,
MyClass::FAILED_TRANSACTION_EVENT,
[MyEventHandlerClass::class, 'handle']
);
然后,每当MyClass
调用$this->trigger(self::FAILED_TRANSACTION_EVENT);
时,都会调用MyEventHandlerClass::handle()
来处理此事件。
您也可以使用global events。在您的配置中:
'on failedTransaction' => [MyEventHandlerClass::class, 'handle'],
并通过Yii::$app->trigger('failedTransaction')
触发事件-这也将调用MyEventHandlerClass::handle()
来处理此事件。
https://stackoverflow.com/questions/51935608
复制相似问题