ModelAdmin 中的 Silverstripe 文件关系未发布

Silverstripe File relation in ModelAdmin doesnt publish

我正在使用 SilverStripe4 和 ModelAdmin 来管理数据对象。

DataObject 在文件上有一个 has_one。到目前为止一切正常,但在前端控制器上,文件关系有一个空对象。

我看到该文件不在 File_Live table 中,所以我猜它没有发布,因此在前端控制器上找不到它。

如何从 ModelAdmin 发布文件关系? 基本上当一个文件被上传时它应该被自动发布。

我想如果我使用版本化的数据对象,我仍然需要这样的东西:https://github.com/drzax/silverstripe-bits/tree/master/VersionedModelAdmin
在 ModelAdmin 上有发布机制。

或者 SS4 中有内置的东西吗? 这也会级联到文件关系吗?

编辑: 关于版本化的数据对象,SS4 中有一个内置的发布按钮 只需使用:

private static $extensions = [
    Versioned::class,
];

private static $versioned_gridfield_extensions = true;

您可以将以下内容添加到您的数据对象中:

private static $owns = ['FileRelationName'];

具有关系的示例:

private static $has_one = ['File' => File::class];
private static $owns = ['File'];

以这种方式声明为 "owned" 的任何相关对象都将与 DataObject 本身一起发布。