【发布时间】:2014-10-23 10:49:02
【问题描述】:
我在 SilverStripe 中安装了一个相册模块。该模块有一个名为 PhotoItem 的 DataObject。
PhotoItem 类包含一些字段,但我想添加额外的字段。最简单的方法是编辑 PhotoItem 文件,但在更新模块时我会丢失更改。
如何使用 /mysite/code 下的 DataObject 文件来扩展此 DataObject 的更多字段?
【问题讨论】:
标签: silverstripe
我在 SilverStripe 中安装了一个相册模块。该模块有一个名为 PhotoItem 的 DataObject。
PhotoItem 类包含一些字段,但我想添加额外的字段。最简单的方法是编辑 PhotoItem 文件,但在更新模块时我会丢失更改。
如何使用 /mysite/code 下的 DataObject 文件来扩展此 DataObject 的更多字段?
【问题讨论】:
标签: silverstripe
在 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,您应该会看到新变量已添加到原始对象中。
【讨论】:
$fields->push(new TextField('ExtraTextField', 'Extra Text Field')) 而不是addFieldToTab。
您正在搜索 DataExtension。看看documentation,您需要为 DataObjects 添加更多字段。 特别是查看名为添加额外数据库字段
的部分【讨论】: