diff options
Diffstat (limited to 'framework')
-rw-r--r-- | framework/Data/TDataFieldAccessor.php | 13 | ||||
-rw-r--r-- | framework/Web/UI/TPage.php | 1 | ||||
-rw-r--r-- | framework/Web/UI/WebControls/TBaseDataList.php | 12 | ||||
-rw-r--r-- | framework/Web/UI/WebControls/TListControl.php | 18 |
4 files changed, 15 insertions, 29 deletions
diff --git a/framework/Data/TDataFieldAccessor.php b/framework/Data/TDataFieldAccessor.php index 2c2be00f..af4d6ac0 100644 --- a/framework/Data/TDataFieldAccessor.php +++ b/framework/Data/TDataFieldAccessor.php @@ -52,10 +52,8 @@ class TDataFieldAccessor {
if(Prado::getApplication()->getMode()===TApplication::STATE_PERFORMANCE)
{
- if(is_array($data))
+ if(is_array($data) || ($data instanceof ArrayAccess))
return $data[$field];
- else if(($data instanceof TMap) || ($data instanceof TList))
- return $data->itemAt($field);
else if(is_object($data))
{
if(strpos($field,'.')===false) // simple field
@@ -73,20 +71,13 @@ class TDataFieldAccessor }
else
{
- if(is_array($data))
+ if(is_array($data) || ($data instanceof ArrayAccess))
{
if(isset($data[$field]))
return $data[$field];
else
throw new TInvalidDataValueException('datafieldaccessor_datafield_invalid',$field);
}
- else if(($data instanceof TMap) || ($data instanceof TList))
- {
- if($data->contains($field))
- return $data->itemAt($field);
- else
- throw new TInvalidDataValueException('datafieldaccessor_datafield_invalid',$field);
- }
else if(is_object($data))
{
if(strpos($field,'.')===false) // simple field
diff --git a/framework/Web/UI/TPage.php b/framework/Web/UI/TPage.php index 2e3dd68e..6e83e3be 100644 --- a/framework/Web/UI/TPage.php +++ b/framework/Web/UI/TPage.php @@ -13,6 +13,7 @@ //Prado::using('System.Web.UI.*');
Prado::using('System.Web.UI.WebControls.*');
Prado::using('System.Web.UI.TControl');
+Prado::using('System.Web.UI.WebControls.TWebControl');
Prado::using('System.Web.UI.TTemplateControl');
Prado::using('System.Web.UI.TForm');
Prado::using('System.Web.UI.TClientScriptManager');
diff --git a/framework/Web/UI/WebControls/TBaseDataList.php b/framework/Web/UI/WebControls/TBaseDataList.php index c68be5f9..b7c79cbe 100644 --- a/framework/Web/UI/WebControls/TBaseDataList.php +++ b/framework/Web/UI/WebControls/TBaseDataList.php @@ -216,17 +216,7 @@ abstract class TBaseDataList extends TDataBoundControl */
protected function getDataFieldValue($data,$field)
{
- if(is_array($data))
- return $data[$field];
- else if(($data instanceof TMap) || ($data instanceof TList))
- return $data->itemAt($field);
- else if(($data instanceof TComponent) && $data->canGetProperty($field))
- {
- $getter='get'.$field;
- return $data->$getter();
- }
- else
- throw new TInvalidDataValueException('basedatalist_datafield_invalid');
+ return TDataFieldAccessor::getDataFieldValue($data,$field);
}
/**
diff --git a/framework/Web/UI/WebControls/TListControl.php b/framework/Web/UI/WebControls/TListControl.php index 55a46171..67f5555a 100644 --- a/framework/Web/UI/WebControls/TListControl.php +++ b/framework/Web/UI/WebControls/TListControl.php @@ -161,15 +161,19 @@ abstract class TListControl extends TDataBoundControl foreach($data as $key=>$object)
{
$item=new TListItem;
- if(!is_string($object) && isset($object[$textField]))
- $text=$object[$textField];
+ if(is_array($object) || is_object($object))
+ {
+ $text=TDataFieldAccessor::getDataFieldValue($object,$textField);
+ $value=TDataFieldAccessor::getDataFieldValue($object,$valueField);
+ $item->setValue($value);
+ }
else
- $text=TPropertyValue::ensureString($object);
+ {
+ $text=$object;
+ if(is_string($key))
+ $item->setValue($key);
+ }
$item->setText($textFormat===''?$text:sprintf($textFormat,$text));
- if(!is_string($object) && isset($object[$valueField]))
- $item->setValue($object[$valueField]);
- else if(!is_integer($key))
- $item->setValue($key);
$items->add($item);
}
}
|