Yii活动 Yii GridView Widget Yii创建活动 您可以使用 事件 在某些执行点注入自定义代码。您可以将自定义代码附加到事件,并且当事件被触发时,代码被执行。例如,当新用户在您的网站上注册时,记录器对象可能会触发 userRegistered 事件。如果一个类需要触发事件,你应该从yii \ base \ Component类扩展它。 事件处理程序是一个PHP回调。您可以使用以下回调 - 指定为字符串的全局PHP函数。 一个匿名函数。 类名和方法的数组作为字符串,例如['ClassName','methodName'] 作为字符串的对象和方法的数组,例如[$ obj,'methodName'] 步骤1 - 要将处理程序附加到事件,您应该调用 yii \ base \ Component :: on() 方法。 $obj = new Obj; // this handler is a global function $obj->on(Obj::EVENT_HELLO, 'function_name'); // this handler is an object method $obj->on(Obj::EVENT_HELLO, [$object, 'methodName']); // this handler is a static class method $obj->on(Obj::EVENT_HELLO, ['app\components\MyComponent', 'methodName']); // this handler is an anonymous function $obj->on(Obj::EVENT_HELLO, function ($event) { // event handling logic }); 您可以附加一个或多个处理程序到事件。附加的处理程序按照它们附加到事件的顺序调用。 第2步 - 要停止调用处理程序,应该将 yii \ base \ Event :: $ handled属性设置 为 true 。 $obj->on(Obj::EVENT_HELLO, function ($event) { $event->handled = true; }); 第3步 - 要在队列的起始处插入处理程序,可以调用 yii \ base \ Component :: on() ,为第四个参数传递false。 $obj->on(Obj::EVENT_HELLO, function ($event) { // ... }, $data, false); 第4步 - 要触发事件,请调用 yii \ base \ Component :: trigger() 方法。 namespace app\components; use yii\base\Component; use yii\base\Event; class Obj extends Component { const EVENT_HELLO = 'hello'; public function triggerEvent() { $this->trigger(self::EVENT_HELLO); } } 第5步 - 要从事件中分离处理程序,应该调用 yii \ base \ Component :: off() 方法。 $obj = new Obj; // this handler is a global function $obj->off(Obj::EVENT_HELLO, 'function_name'); // this handler is an object method $obj->off(Obj::EVENT_HELLO, [$object, 'methodName']); // this handler is a static class method $obj->off(Obj::EVENT_HELLO, ['app\components\MyComponent', 'methodName']); // this handler is an anonymous function $obj->off(Obj::EVENT_HELLO, function ($event) { // event handling logic }); Yii GridView Widget Yii创建活动