From 1f1f96b7e143973e7da69fc01ebd6721f62e291c Mon Sep 17 00:00:00 2001 From: xue <> Date: Sat, 10 Dec 2005 02:02:10 +0000 Subject: --- framework/Web/UI/TControl.php | 22 +++++++++++++++++++++- framework/Web/UI/WebControls/TContent.php | 2 ++ .../Web/UI/WebControls/TContentPlaceHolder.php | 5 ++++- 3 files changed, 27 insertions(+), 2 deletions(-) (limited to 'framework/Web/UI') diff --git a/framework/Web/UI/TControl.php b/framework/Web/UI/TControl.php index ce343925..7a123ed2 100644 --- a/framework/Web/UI/TControl.php +++ b/framework/Web/UI/TControl.php @@ -790,7 +790,7 @@ class TControl extends TComponent * The current naming container is either the control itself * if it implements {@link INamingContainer} or the control's naming container. * The ID path is an ID sequence separated by {@link TControl::ID_SEPARATOR}. - * For example, 'Repeater1:Item1:Button1' looks for a control with ID 'Button1' + * For example, 'Repeater1.Item1.Button1' looks for a control with ID 'Button1' * whose naming container is 'Item1' whose naming container is 'Repeater1'. * @param string ID of the control to be looked up * @return TControl|null the control found, null if not found @@ -798,6 +798,7 @@ class TControl extends TComponent */ public function findControl($id) { + $id=strtr($id,'.',self::ID_SEPARATOR); $container=($this instanceof INamingContainer)?$this:$this->getNamingContainer(); if(!$container || !$container->getHasControls()) return null; @@ -842,6 +843,25 @@ class TControl extends TComponent $this->_rf[self::RF_NAMED_OBJECTS][$name]=$object; } + /** + * Unregisters an object by name. + * @param string name of the object + * @see registerObject + */ + public function unregisterObject($name) + { + unset($this->_rf[self::RF_NAMED_OBJECTS][$name]); + } + + /** + * @return boolean whether an object has been registered with the name + * @see registerObject + */ + public function isObjectRegistered($name) + { + return isset($this->_rf[self::RF_NAMED_OBJECTS][$name]); + } + /** * This method is invoked after the control is instantiated by a template. * When this method is invoked, the control should have a valid TemplateControl diff --git a/framework/Web/UI/WebControls/TContent.php b/framework/Web/UI/WebControls/TContent.php index 20cd1dc5..d02d3b4d 100644 --- a/framework/Web/UI/WebControls/TContent.php +++ b/framework/Web/UI/WebControls/TContent.php @@ -39,6 +39,8 @@ class TContent extends TControl implements INamingContainer */ public function createdOnTemplate($parent) { + if(($id=$this->getID())==='') + throw new TConfigurationException('content_id_required'); $this->getTemplateControl()->registerContent($this); parent::createdOnTemplate($parent); } diff --git a/framework/Web/UI/WebControls/TContentPlaceHolder.php b/framework/Web/UI/WebControls/TContentPlaceHolder.php index 32106e82..a13e85bc 100644 --- a/framework/Web/UI/WebControls/TContentPlaceHolder.php +++ b/framework/Web/UI/WebControls/TContentPlaceHolder.php @@ -39,8 +39,11 @@ class TContentPlaceHolder extends TControl */ public function createdOnTemplate($parent) { + if(($id=$this->getID())==='') + throw new TConfigurationException('contentplaceholder_id_required'); $loc=$parent->getHasControls()?$parent->getControls()->getCount():0; - $this->getTemplateControl()->registerContentPlaceHolder($this->getID(),$parent,$loc); + $this->getTemplateControl()->registerContentPlaceHolder($id,$parent,$loc); + $parent->unregisterObject($id); } } -- cgit v1.2.3