sbooker / yii2-event-component
将事件附加到所有模型
这个包的官方仓库似乎已经消失,因此该包已被冻结。
2.0.2
2017-06-09 08:16 UTC
This package is auto-updated.
Last update: 2021-05-01 00:12:43 UTC
README
以非常简单的方式将事件附加到应用程序中的所有模型。只需按照以下方式在 config/_events.php 中列出您的事件处理器:[ 'event\sender\ClassName' => [ 'eventName' => [ 'event\handler\ClassName' => 'methodName' ] ] ];
下面是示例。
安装
安装此扩展的首选方式是通过 composer。
运行以下命令之一:
php composer.phar require --prefer-dist sbooker/yii2-event-component "*"
或者
"sbooker/yii2-event-component": "*"
将以下内容添加到您的 composer.json 文件的 require 部分中。
使用方法
Define app component in main config components section like in this example:
'components' => [
...
'eventManager'=> [
'class' => 'bariew\eventManager\EventManager',
'events' => [
'app\models\User' => [
'afterInsert' => [
['app\models\Email', 'userRegistration'],
'eventQueue',
],
]
],
'handlers' => [
'eventQueue' => function (Event $event) {
\Yii::$app->eventQueue->push($event);
}
]
],
]
Explanation: in the example we defined that after creating new User model ('afterInsert')
Email::userRegistration($event) method will be called.
Since 1.1.0 you may also not define event manager, but just put _events.php
into your config folder returning the same 'events' array as in example:
<?php
return [
'app\models\User' => [
'afterInsert' => [
['app\models\Email', 'userRegistration']
],
]
];
since 1.3.0 handler can also keep additional data and $append boolean as for Event::on() method eg:
... [$handlerClassName, $handlerMethodName, ['myData'], false]