yiicod / yii2-listener
为Yii2框架提供的简单而强大的事件监听器
1.0.7
2018-04-09 20:21 UTC
Requires
- symfony/finder: ~3.0|~4.0
- yiisoft/yii2: 2.*
Requires (Dev)
README
提供监听逻辑。命令解析选定的路径以查找所有监听器/订阅者(依赖于ListenerInterface和SubscriberInterface实现)。监听器可以用于单个事件,而订阅者可以用于多个事件。
安装
运行以下命令
php composer.phar require --prefer-dist yiicod/yii2-listener "*"
或者将以下内容添加到你的composer.json文件中
"yii2-listener": "*"
到
Web配置
'bootstrap' => ['listener'], 'components' => [ 'listener' => [ 'class' => 'yiicod\listener\components\Listener' ], ]
控制台配置
'controllerMap' => [ 'listener' => [ 'class' => \yiicod\listener\commands\Listener::class ], ]
运行命令。此命令将预热和准备所有监听器和订阅。每次创建新的监听器或订阅时,请运行此命令。
listener/parse
要触发事件,请参阅yii手册:https://yiiframework.cn/doc-2.0/guide-concept-events.html#class-level-event-handlers
监听器使用
namespace frontend\observers\listeners; use yii\db\ActiveRecord; use yiicod\listener\components\listeners\ListenerAbstract; class TestListener extends ListenerAbstract { /** * Call on event method */ public function handle($event) { // TODO: Implement handle() method. } /** * Return event name for emit * @return string */ public static function event(): string { return ActiveRecord::class . '@' . ActiveRecord::EVENT_AFTER_FIND; } }
订阅者使用
namespace frontend\observers\subscribers; use yii\db\ActiveRecord; use yiicod\listener\components\listeners\SubscriberAbstract; class TestSubscriber extends SubscriberAbstract { /** * @return array * [ * 'event_class@event1' => 'on' * 'event_class@event2' => 'on' * ] */ public static function subscribe(): array { return [ ActiveRecord::class . '@' . ActiveRecord::EVENT_BEFORE_INSERT => 'on', ActiveRecord::class . '@' . ActiveRecord::EVENT_AFTER_INSERT => 'on' ]; } /** * Call on event method */ public function on($event) { // Handle } }