我想扩展现有的Silverstripe模块(Swipestripe),其中Attribute has_many Options。
以下代码成功扩展了Option,因此会为每个选项添加成本。
class OptionCost extends DataExtension {
private static $db = array(
'Cost' => 'Decimal(19,4)'
);
public function getCMSFields() {
$fields = parent::getCMSFields();
$fields->addFieldToTab('Root.Main', new PriceField('Cost'));
return $fields;
}
}
但是,当通过父属性查看选项时,不显示成本。这是通过 $ summary_fields 静态控制的,但我无法将费用添加为新的摘要字段。
我尝试将以下代码添加到OptionCost,并添加到Attribute的扩展名中 - 但这两种方法都没有效果。
private static $summary_fields = array(
'Cost' => 'Cost'
);
在summary_fields表中添加Cost的正确方法是什么?
提前感谢您的任何建议。
答案 0 :(得分:3)
在Silverstripe 3.1中,在扩展名中向$summary_fields
添加字段是正确的方法。
以下代码对我有用:
class OptionCost extends DataExtension {
private static $db = array(
'Cost' => 'Decimal(19,4)'
);
private static $summary_fields = array(
'Cost'
);
public function getCMSFields() {
$fields = parent::getCMSFields();
$fields->addFieldToTab('Root.Main', new PriceField('Cost'));
return $fields;
}
}
在配置或配置yaml文件中声明扩展名。
<强> config.yml 强>
...
Attribute:
extensions:
- OptionCost
...
运行dev/build?flush=all
。
另请确保在管理页面上致电?flush=all
。