mirror of
https://github.com/silverstripe/silverstripe-framework
synced 2024-10-22 12:05:37 +00:00
Refactored [47092]: Add TableListField::getCastedValue
git-svn-id: svn://svn.silverstripe.com/silverstripe/open/modules/sapphire/trunk@60543 467b73ca-7a2a-4603-9d3b-597d59a354a9
This commit is contained in:
parent
f7ff65c04d
commit
8447e7fca5
@ -587,10 +587,7 @@ JS
|
|||||||
|
|
||||||
// Optional casting, Format: array('MyFieldName'=>array('sum','Currency->Nice'))
|
// Optional casting, Format: array('MyFieldName'=>array('sum','Currency->Nice'))
|
||||||
if(isset($casting)) {
|
if(isset($casting)) {
|
||||||
$fieldTypeParts = explode('->', $casting);
|
$summaryValue = $this->getCastedValue($summaryValue, $casting);
|
||||||
$castingFieldType = $fieldTypeParts[0];
|
|
||||||
$castingMethod = $fieldTypeParts[1];
|
|
||||||
$summaryValue = DBField::create($castingFieldType, $summaryValue)->$castingMethod();
|
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
$summaryValue = null;
|
$summaryValue = null;
|
||||||
@ -1082,7 +1079,32 @@ JS
|
|||||||
return $permissions;
|
return $permissions;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param $value
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
function getCastedValue($value, $castingDefinition) {
|
||||||
|
if(is_array($castingDefinition)) {
|
||||||
|
$castingParams = $castingDefinition;
|
||||||
|
array_shift($castingParams);
|
||||||
|
$castingDefinition = array_shift($castingDefinition);
|
||||||
|
} else {
|
||||||
|
$castingParams = array();
|
||||||
|
}
|
||||||
|
if(strpos($castingDefinition,'->') === false) {
|
||||||
|
$castingFieldType = $castingDefinition;
|
||||||
|
$castingField = DBField::create($castingFieldType, $value);
|
||||||
|
$value = call_user_func_array(array($castingField,'XML'),$castingParams);
|
||||||
|
} else {
|
||||||
|
$fieldTypeParts = explode('->', $castingDefinition);
|
||||||
|
$castingFieldType = $fieldTypeParts[0];
|
||||||
|
$castingMethod = $fieldTypeParts[1];
|
||||||
|
$castingField = DBField::create($castingFieldType, $value);
|
||||||
|
$value = call_user_func_array(array($castingField,$castingMethod),$castingParams);
|
||||||
|
}
|
||||||
|
|
||||||
|
return $value;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* #########################
|
* #########################
|
||||||
@ -1141,20 +1163,7 @@ class TableListField_Item extends ViewableData {
|
|||||||
}
|
}
|
||||||
// casting
|
// casting
|
||||||
if(array_key_exists($fieldName, $this->parent->fieldCasting)) {
|
if(array_key_exists($fieldName, $this->parent->fieldCasting)) {
|
||||||
$fieldType = $this->parent->fieldCasting[$fieldName];
|
$value = $this->parent->getCastedValue($value, $this->parent->fieldCasting[$fieldName]);
|
||||||
if(strpos($fieldType,'->') === false) {
|
|
||||||
$castingFieldType = $fieldType;
|
|
||||||
$castingField = new $castingFieldType($fieldName);
|
|
||||||
$castingField->setValue($value);
|
|
||||||
$value = $castingField->XML();
|
|
||||||
} else {
|
|
||||||
$fieldTypeParts = explode('->', $fieldType);
|
|
||||||
$castingFieldType = $fieldTypeParts[0];
|
|
||||||
$castingMethod = $fieldTypeParts[1];
|
|
||||||
$castingField = new $castingFieldType($fieldName);
|
|
||||||
$castingField->setValue($value);
|
|
||||||
$value = $castingField->$castingMethod();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// formatting
|
// formatting
|
||||||
|
Loading…
x
Reference in New Issue
Block a user