再次,抱歉耽搁了,但我认为分享一些有关此问题的信息会很有用。
我遇到了同样的问题,我想在上传新图像时阻止默认图像删除过程。我尝试了很多不同的方法,我终于弄清楚了问题所在。
首先,您可以覆盖图像的默认类型。使用setFormType 方法,您可以将ImageField 设置为FileUploadType,如下例所示:
public function configureFields(string $pageName): iterable
{
return [
...
ImageField::new('image')
->setFormType(FileUploadType::class)
...
}
然后,如果您仔细查看configureOptions 方法上的FileUploadType,您会看到一些可以被覆盖的参数。
$resolver->setDefaults([
'upload_dir' => $this->projectDir.'/public/uploads/files/',
'upload_new' => $uploadNew,
'upload_delete' => $uploadDelete,
'upload_filename' => $uploadFilename,
'upload_validate' => $uploadValidate,
'download_path' => $downloadPath,
'allow_add' => $allowAdd,
'allow_delete' => true,
'data_class' => $dataClass,
'empty_data' => $emptyData,
'multiple' => false,
'required' => false,
'error_bubbling' => false,
'allow_file_upload' => true,
]);
最后你需要做的是覆盖upload_delete 选项的默认函数。现在你只需要像这样使用函数setFormTypeOption 覆盖这个可调用对象:
public function configureFields(string $pageName): iterable
{
return [
...
ImageField::new('image')
->setFormType(FileUploadType::class)
->setFormTypeOption('allow_delete', false)
->setFormTypeOption('upload_delete', function(File $file) {})
...
}
您也可以使用相同的方法将allow_delete 设置为false。