summaryrefslogtreecommitdiff
path: root/framework/TComponent.php
diff options
context:
space:
mode:
authorxue <>2007-04-02 01:23:05 +0000
committerxue <>2007-04-02 01:23:05 +0000
commitcda6cccf6ca7c3fee2d7c37e50b5c7fd7b2c5662 (patch)
tree56d72b8f993190a1f9d76f3cb007618aa3fc7af8 /framework/TComponent.php
parent8ce268ab449d1fe63baf6a6302af6d05bcf1d1aa (diff)
Fixed the bug that event handler specified via subproperty in template does not work
Diffstat (limited to 'framework/TComponent.php')
-rw-r--r--framework/TComponent.php12
1 files changed, 11 insertions, 1 deletions
diff --git a/framework/TComponent.php b/framework/TComponent.php
index 54fe7ec7..79732290 100644
--- a/framework/TComponent.php
+++ b/framework/TComponent.php
@@ -345,7 +345,17 @@ class TComponent
{
if(is_string($handler))
{
- call_user_func($handler,$sender,$param);
+ if(($pos=strrpos($handler,'.'))!==false)
+ {
+ $object=$this->getSubProperty(substr($handler,0,$pos));
+ $method=substr($handler,$pos+1);
+ if(method_exists($object,$method))
+ $object->$method($sender,$param);
+ else
+ throw new TInvalidDataValueException('component_eventhandler_invalid',get_class($this),$name);
+ }
+ else
+ call_user_func($handler,$sender,$param);
}
else if(is_callable($handler,true))
{