背景图片 UploadField 不显示在 CMS 中

Background Image UploadField doesn't show in the CMS

在 SilverStripe CMS 网站上,我有一个自定义页脚附加代码,我想对其进行扩展,以便我可以在 CMS 中上传背景图片。代码看起来不错,但是添加的字段在CMS中找不到。

这是我的代码:

class CustomFooter extends DataExtension {

    static $db = array(
        'FooterContent' => 'HTMLText'
    );

    public static $has_one = array(
        'Logo' => 'Image',
        'BGImage' => 'Background Image'
    );

    public function getCMSFields() {
        $this->extend('updateCMSFields', $fields);
        return $fields;
    }

    public function updateCMSFields(FieldList $fields) {
        $fields->addFieldToTab('Root.Footer', new HTMLEditorField('FooterContent', 'Footer Content'));
        $fields->addFieldToTab('Root.Main', new UploadField('Logo', 'Company Logo'));
        $fields->addFieldToTab('Root.Main', new UploadField('BGImage', 'Background image'));
    }
}

奇怪的是,两个图片上传字段都没有显示“内容”选项卡显示的位置和预期的功能。

为什么 UploadField 没有显示?

你的

public static $has_one = array(
"Logo"=>"Image",
"BGImage"=>"Background Image"
);

看起来很奇怪。 $has_one 数组将关系名称作为键,将关系的 class 名称作为值,我怀疑名称中带有 space 的 class 名称是否允许。所以我会尝试

public static $has_one = array(
"Logo"=>"Image",
"BGImage"=>"Image"
);

然后 运行 一个 dev/build?flush 并在数据库中检查你的 table 是否有一个 LogoID 列和一个 BGImageID 列的关系.

字段生成看起来不错,应该可以正常工作。