簡體   English   中英

Symfony 5、EasyAdmin3:字段ImageField,怎么不刪?

[英]Symfony 5, EasyAdmin3 : Field ImageField, How not to delete?

對不起我的英語。

在一個表單中,我使用 ImageField (esasyadmin 3),如下所示:

$img = ImageField::new('img')
->setBasePath('images)
->setUploadDir('public/images)
->setUploadedFileNamePattern('[name].[extension]')
->setRequired(false)
;

目標是從“public/images”文件夾中選擇一個圖像。 但是,如果我決定更改此圖像,它會刪除我之前從文件夾中選擇的圖像。 我不想要這種行為,因為我的圖像可以在其他地方使用。 如何防止這種刪除? 我是否選擇了正確的控制類型? 謝謝

抱歉耽擱了,但請使用:

$img=ImageField::new('img')
    ->setBasePath('images')
    ->setUploadDir('public/images')
    ->setUploadedFileNamePattern("$name.[extension]")
    ->setRequired(false);

再次,抱歉耽擱了,但我認為分享一些關於這個問題的東西會很有用。

我有同樣的問題,我想在上傳新圖像時阻止默認圖像刪除過程。 我嘗試了許多不同的方法,我終於弄清楚了問題所在。

首先,您可以覆蓋圖像的默認類型。 使用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,
]);

最后你需要做的是覆蓋默認的 function 為upload_delete選項。 現在您只需要使用 function 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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM