From a3b148af613126e26ca4594f64ce01d7c18647e8 Mon Sep 17 00:00:00 2001 From: egorpromo Date: Sun, 17 Nov 2013 10:38:12 +0700 Subject: [PATCH] Events can be used like filters --- framework/yii/base/Component.php | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/framework/yii/base/Component.php b/framework/yii/base/Component.php index 2ef4eada2a5..5ef24a44625 100644 --- a/framework/yii/base/Component.php +++ b/framework/yii/base/Component.php @@ -435,6 +435,7 @@ public function off($name, $handler = null) * all attached handlers for the event. * @param string $name the event name * @param Event $event the event parameter. If not set, a default [[Event]] object will be created. + * @return mix Result that attached handlers */ public function trigger($name, $event = null) { @@ -450,14 +451,18 @@ public function trigger($name, $event = null) $event->name = $name; foreach ($this->_events[$name] as $handler) { $event->data = $handler[1]; - call_user_func($handler[0], $event); + $returnedEvent = call_user_func($handler[0], $event); + if ($returnedEvent instanceof Event) { + $event = $returnedEvent; + } // stop further handling if the event is handled if ($event instanceof Event && $event->handled) { - return; + return $event; } } } Event::trigger($this, $name, $event); + return $event; } /**