Silverstripe 将 UploadField 添加到 ModelAdmin 失败

Silverstripe add UploadField to ModelAdmin failed

我正在尝试通过在 GridFieldList 之后创建扩展来将 UploadField 添加到 ModelAdmin。但我总是收到错误消息“在第 161 行的 ..../framework/forms/FormField.php 中的非对象上调用成员函数 FormAction()”。我可以毫无问题地添加 TextField、DropdownField,但 UploadField 就不行了。 我错过了什么吗?

<code>
    class MyExtension extends Extension{
        public static $has_one = array(
            'ImportCSV' => 'File'
        );
        public function updateEditForm($form){
            $fields = $form->Fields();
            $fields->push(
                new TextField('Title', 'Title')
            );//This one works
            $fields->push(
                new UploadField('ImportCSV', 'Import CSV')
            );//This one not working
        }
    }
</code>

如果您正在编写 Extension(特别是 DataExtension),那么您将使用 updateCMSFields($fields),它通过引用传递 FieldList 的实例。

但是要按照我认为的方式添加 UploadField,请将其添加到 DataExtension 中,在对 updateCMSFields() 的调用中扩展(装饰)File 或在上面的示例中将 extends Extension 更改为 extends DataExtension,并且 运行 dev/build flush=all