在SilverStripe中扩展DataObject

时间:2014-10-23 10:49:03

标签: silverstripe

我在SilverStripe中安装了一个photogallery模块。该模块有一个名为PhotoItem的DataObject。

PhotoItem类包含一些字段,但我想添加额外的字段。最简单的方法是编辑PhotoItem文件,但是在更新模块时我会丢失更改。

如何使用/ mysite / code下的DataObject文件扩展此DataObject以及更多字段?

2 个答案:

答案 0 :(得分:3)

在Silverstripe 3.1中,您可以通过创建DataExtension并将其应用于您的班级来扩展课程。

首先,您将在 mysite / code mysite / code / extensions 中创建 CustomPhotoItem.php

<强> CustomPhotoItem.php

class CustomPhotoItem extends DataExtension {

    private static $db = array(
        'ExtraTextField' => 'Text'
    );

    public function updateCMSFields(FieldList $fields) {
        $fields->push(TextField::create('ExtraTextField', 'Extra Text Field'));
    }
}

要将此扩展程序应用于您的课程,您需要将以下内容添加到config.yml

<强> config.yml

PhotoItem:
  extensions:
    - CustomPhotoItem

您的config.yml应位于 mysite / _config / config.yml 中。

运行dev/build?flush=1,您应该会看到新变量已添加到原始对象中。

答案 1 :(得分:2)

您正在搜索DataExtension。看看documentation,您需要为DataObjects添加更多字段。 特别要看一下名为添加额外数据库字段

的部分