在 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/