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
我正在尝试通过在 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