Silverstripe MoneyField被更改,始终返回true
我有一个Silverstripe MoneyField被更改,始终返回true,silverstripe,Silverstripe,我有一个数据对象确认,如下所示: <?php class Confirmation extends DataObject { private static $db = array( 'Reimbursement' => 'Money', 'SomeText' => 'Varchar(255)' ); private static $has_one = array( 'Page' =>
数据对象
确认
,如下所示:
<?php
class Confirmation extends DataObject
{
private static $db = array(
'Reimbursement' => 'Money',
'SomeText' => 'Varchar(255)'
);
private static $has_one = array(
'Page' => 'Page'
);
public function getCMSFields()
{
$fields = parent::getCMSFields();
$reimbursementField = MoneyField::create('Reimbursement');
$someTextField = TextField::create('SomeText');
$reimbursementField->setAllowedCurrencies(array('SEK'));
$fields->addFieldsToTab(
'Root.Main',
array(
$reimbursementField,
$someTextField
)
);
return $fields;
}
public function onBeforeWrite()
{
parent::onBeforeWrite();
if($this->isChanged('Reimbursement')) SS_Log::log( print_r ( 'changed', true ), SS_Log::WARN );
}
}
你的确认书和金钱模型之间可能存在一种不可靠的关系——你能分享他们的关系吗?@RobbieAverill谢谢。我对问题进行了沙盒处理,并发布了整个
DataObject
-请查看更新的问题。@Janne Klouman您是对的,Money::isChanged总是设置为true。尝试使用$confirmation->replumentamount
和$confirmation->replumentcurrency
作为原始数据库值。是的,我最后检查了$this->replumentamount->getAmount()self::get()->byID($this->ID)->报销->获取金额()
查看字段是否已更改。
[22-Mar-2016 16:28:07] Warning at framework/model/DataObject.php line 2597: Array
(
[Reimbursement] => Array
(
[before] =>
[after] => Money Object
(
[currency:protected] => SEK
[amount:protected] => 25000
[isChanged:protected] => 1
[locale:protected] =>
[currencyLib:protected] => Zend_Currency Object
(
[_options:protected] => Array
(
[position] => 8
[script] =>
[format] =>
[display] => 2
[precision] => 2
[name] => svensk krona
[currency] => SEK
[symbol] => kr
[locale] => sv_SE
[value] => 0
[service] =>
[tag] => Zend_Locale
)
)
[allowedCurrencies:protected] =>
[value:protected] =>
[tableName:protected] =>
[name:protected] => Reimbursement
[arrayValue:protected] =>
[defaultVal:protected] =>
[failover:protected] =>
[customisedObject:protected] =>
[objCache:ViewableData:private] => Array
(
)
[class] => Money
[extension_instances:protected] => Array
(
)
[beforeExtendCallbacks:protected] => Array
(
)
[afterExtendCallbacks:protected] => Array
(
)
)
[level] => 2
)
)