我在扩展DataObject中使用Link类作为$has_one
。但是当我保存我的对象时,链接值就会丢失。
<?php
class Teaser extends DataObject {
private static $db = array (
'Title' => 'Varchar',
'Description' => 'HTMLText'
);
private static $has_one = array (
'Photo' => 'Image',
'MyLink' => 'Link'
);
private static $many_many = array(
'Tags' => 'Tag'
);
private static $summary_fields = array (
// ...
);
public function getCMSFields() {
$fields = FieldList::create(
TextField::create('Title'),
$tags = TagField::create('Tags','Tags',Tag::get(),$this->Tags()),
HTMLEditorField::create('Description', 'Beschreibung'),
LinkField::create('MyLink', 'Weiterleitung', $this->MyLink()),
$uploader = UploadField::create('Photo')
);
// ...
return $fields;
}
}
我在一个页面中尝试了这个例子并且它可以工作但是在DataObject中我无法保存该值。
答案 0 :(得分:2)
如Example中所述,您需要将ID
添加到字段标题中。因为它是$has_one
关系,MyLink
将在数据库中保存为MyLinkID
。
LinkField::create('MyLinkID', 'Weiterleitung', $this->MyLink())
应该这样做。