yii2 Event 使用2

来源:互联网 发布:nginx 访问用户名密码 编辑:程序博客网 时间:2024/05/13 06:02


这里说的是通过行为的方式绑定事件


1.定义行为事件类: MyBehavior.php

<?phpnamespace myapp\frontend\code\ECM\Customer\events;use yii\db\ActiveRecord;use yii\base\Behavior;use myapp\frontend\code\ECM\Cms\controllers\IndexController;class MyBehavior extends Behavior{    // 其它代码const EVENT_HELLO = 'myhello';    public function events()    {        return [            self::EVENT_HELLO => 'hello',        ];    }    public function hello($event)    {        \Yii::info($event->message,'mylog');    }}?>


2.定义数据格式类:

<?phpnamespace myapp\frontend\code\ECM\Customer\events;use Yii;use yii\base\Model;use yii\base\Event;/** * ContactForm is the model behind the contact form. */class MessageEvent extends Event{    public $message;}


3.在行为函数中绑定定义的   行为事件

<?phpnamespace myapp\frontend\code\ECM\Cms\controllers;use Yii;use myapp\frontend\code\ECM\BaseController;use myapp\frontend\code\ECM\Customer\events\MyBehavior;use myapp\frontend\code\ECM\Customer\events\Ha;use myapp\frontend\code\ECM\Customer\events\MessageEvent;class IndexController extends BaseController{      # 定义Event的名字    //const EVENT_HELLO = 'my hello'; public function behaviors()    {        return [                       # 命名行为, 绑定行为事件# 绑定后 会通过这个类的events()  返回所有的事件数组,然后全部绑定。# 道理就是:通过行为的方式绑定对应的event , 和on函数绑定一个原理            'myBehavior2' => MyBehavior::className(),        ];    }    public function actionIndex()    {#定义传递数据的格式 Event$event = new MessageEvent;# 赋值        $event->message = 'good';# 触发事件 # 这里已经不需要on绑定,因为在行为中已经绑定完成$this->trigger(MyBehavior::EVENT_HELLO,$event);        return $this->render('index');    }}


4.打印日志查看:tail -f  app/runtime/logs/my.log

2015-11-17 11:50:54 Array[info][mylog] good    in /www/web/develop/test/erp/myapp/frontend/code/ECM/Customer/events/MyBehavior.php:21    in /www/web/develop/test/erp/myapp/frontend/code/ECM/Cms/controllers/IndexController.php:36

已经输出对应的  $EventMessage->mesage值。

good!











0 0
原创粉丝点击