Silverstripe 3 - SiteConfig DataObject上的图像关系

时间:2013-06-19 02:04:03

标签: silverstripe

SS不保存DataObject(扩展名)与Image的关系;我认为问题可能出在SiteConfig ModelAdmin上。

这是(部分)Site Config扩展类:

class CustomSiteConfig extends DataExtension { 
    static $has_many = array(
        'HeaderSections' => 'HeaderSection',
        'FooterSections' => 'FooterSection',
    );

    public function updateCMSFields(FieldList $fields) {
        ...
        $fields->addFieldToTab('Root.Header', $gridFieldHeader);
        ...
    }
}

我当然已经将所需的代码添加到_config。

这是(部分)DataObject扩展HeaderSection:

class HeaderSection extends DataObject {
    public static $has_many = array(
        'Sections' => 'HeaderSubSection'
    );

    public function getCMSFields() {
        ...
        $gridField = new GridField('Sections', 'Dropdown Sections', $this->Sections(), $gridFieldConfig);
        ...
    }
}

属于HeaderSection的DataObject扩展类称为HeaderSubSection:

class HeaderSubSection extends DataObject {
    static $has_one = array(
        'HeaderSection' => 'HeaderSection',
        'InternalLink' => 'SiteTree',
        'Image' => 'Image'
    );

    public function getCMSFields() {
        ...
        $fields->addFieldToTab('Root.Main', new UploadField('Image', 'Section Image', $this->Image()));
        ...
    }
}

其他一切都有效,所有其他字段都保存(包括'InternalLink'及其关系),但我无法保存图像。

我是否需要将Header Sections移动到它自己的ModelAdmin页面,然后以某种方式将它们链接回SiteConfig?

1 个答案:

答案 0 :(得分:0)

我最后在has_one中添加了另一个Image字段,但它确实有效。

猜猜SS不喜欢命名图像字段“图像”。