SilverStripe可链接模块

时间:2015-12-09 12:03:59

标签: silverstripe

我在扩展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中我无法保存该值。

https://github.com/sheadawson/silverstripe-linkable

1 个答案:

答案 0 :(得分:2)

Example中所述,您需要将ID添加到字段标题中。因为它是$has_one关系,MyLink将在数据库中保存为MyLinkID

LinkField::create('MyLinkID', 'Weiterleitung', $this->MyLink())

应该这样做。