如何在扩展对象时在Silverstripe中添加额外的summary_field?

时间:2014-04-02 22:09:53

标签: php oop silverstripe

我想扩展现有的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的正确方法是什么?

提前感谢您的任何建议。

1 个答案:

答案 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