在 Silverstripe 4 中,上传的文件必须在网站的公共(public)端可见之前发布。

如果我创建一个带有 $has_one Image::Class 的 $Page,然后将该图像分配给 $owns[],则在我发布页面时将发布上传的图像。

但是,如果我创建以下数据对象结构,则不会。

Class Item extends DataObject{
    $has_one[
        'ItemImage'=>Image::Class,
        'Catalog'=>'Catalog'
    ];

    $owns[
        'ItemImage'
    ]
}

Class Catalog extend DataObject{
    $has_many[
        'Items'=>'Item'
    ]
    $owns[
        'Items'
    ]

    public function getCMSFields(){
        $fields = parent::getCMSFields();

        $fields->addFieldToTab('Root.Items', GridField::create('Items', 'Items', $this->Items(), GridFieldConfig_RecordEditor::create()));

        return $fields;

    }
}

如果我创建一个目录并在其中创建带有图像的项目然后保存它,它不会发布上传的图像。我将不得不手动:
1.选择图片
2. 编辑原稿
3. 发布

必须为用户提供一种更简单的方法。

最佳答案

目前在 GitHub 上的多个存储库上对此进行了讨论。

目前的解决方案是在 onAfterWrite 中手动发布图像,或者版本您的 DataObject,最好通过 YML:

My\Data\Object
  extensions:
    - Versioned

关于silverstripe - 如何在 Silverstripe 模型管理中自动发布上传到数据对象的文件,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48144600/

10-16 23:58