首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Symfony 5,EasyAdmin3 :字段ImageField,如何不删除?

Symfony 5,EasyAdmin3 :字段ImageField,如何不删除?
EN

Stack Overflow用户
提问于 2020-12-14 19:20:38
回答 2查看 546关注 0票数 0

对不起,我的英语不好。

在表单中,我使用ImageField (Esasyadmin3),如下所示:

代码语言:javascript
复制
$img = ImageField::new('img')
->setBasePath('images)
->setUploadDir('public/images)
->setUploadedFileNamePattern('[name].[extension]')
->setRequired(false)
;

目标是从“public/images”文件夹中选择一个镜像。但是,如果我决定更改此图像,它将删除我先前从文件夹中选择的图像。我不想要这种行为,因为我的图像可以在其他地方使用。如何防止这种删除?我是否选择了正确的控件类型?谢谢

EN

回答 2

Stack Overflow用户

发布于 2021-01-18 02:15:18

很抱歉延迟了,但请使用以下命令:

代码语言:javascript
复制
$img=ImageField::new('img')
    ->setBasePath('images')
    ->setUploadDir('public/images')
    ->setUploadedFileNamePattern("$name.[extension]")
    ->setRequired(false);
票数 1
EN

Stack Overflow用户

发布于 2021-04-26 23:13:49

再一次,很抱歉延迟了,但我认为分享一些关于这个问题的东西是有用的。

我也遇到了同样的问题,我希望在上传新图像时阻止默认图像删除过程。我尝试了许多不同的方法,最终找出了问题所在。

首先,您可以覆盖图像的默认类型。使用setFormType方法,您可以将ImageField设置为如下示例所示的FileUploadType

代码语言:javascript
复制
public function configureFields(string $pageName): iterable
   {
      return [
         ...
         ImageField::new('image')
            ->setFormType(FileUploadType::class)
            ...
   }

然后,如果您仔细查看configureOptions方法上的FileUploadType,您将看到一些可以被覆盖的参数。

代码语言:javascript
复制
$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覆盖此可调用对象:

代码语言:javascript
复制
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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65288121

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档