Загрузите несколько изображений с помощью VichUploaderBundle

Я хочу загружать файлы с помощью VichUploaderBundle. Это моя сущность

........
/**
 *
 * @Vich\UploadableField(mapping="product_image", fileNameProperty="imageName")
 *
 * @var File $imageFile
 */
protected $imageFile;

/**
 * @ORM\Column(type="string", length=255, name="image_name")
 *
 * @var string $imageName
 */
protected $imageName;

/**
 * @ORM\Column(type="datetime")
 *
 * @var \DateTime $updatedAt
 */
protected $updatedAt;

/**
 * @param File|\Symfony\Component\HttpFoundation\File\UploadedFile $image
 */
public function setImageFile(File $image = null)
{
    $this->imageFile = $image;

    if ($image) {
        $this->updatedAt = new \DateTime('now');
    }
}

/**
 * @return File
 */
public function getImageFile()
{
    return $this->imageFile;
}

/**
 * @param string $imageName
 */
public function setImageName($imageName)
{
    $this->imageName = $imageName;
}

/**
 * @return string
 */
public function getImageName()
{
    return $this->imageName;
}
.........

Мой конструктор форм выглядит так

  ........
  $builder
        ->add('brand')
        ->add('model')
        ->add('price')
        ->add('imageName')
        ->add('updatedAt')
        ->add('sub_rel')
 .......

Мой файл конфигурации выглядит так

vich_uploader:
db_driver: orm
mappings:
    product_image:
        uri_prefix:         /images/goods
        upload_destination: %kernel.root_dir%/../web/images/goods

        inject_on_load:     false
        delete_on_update:   true
        delete_on_remove:   true

Вопрос: Что мне нужно изменить, чтобы я мог использовать этот пакет для загрузки нескольких изображений?


person Rick Has    schedule 21.06.2015    source источник
comment
Вы можете объяснить дальше? Вы хотите отображать много изображений в представлении и иметь ссылку для загрузки? Вы хотите иметь возможность скачивать их по прямой ссылке / api?   -  person gvf    schedule 22.06.2015
comment
@gvf я хочу загрузить изображение для моих товаров в админке   -  person Rick Has    schedule 22.06.2015
comment
Я думаю, вы можете загружать только одно изображение для каждого экземпляра. Вы не можете обрабатывать несколько файлов для одного и того же свойства с помощью vichuploader. Я не пользовался им какое-то время, может, это изменилось   -  person Hakim    schedule 24.06.2015
comment
Скачать или загрузить?   -  person es cologne    schedule 12.06.2019


Ответы (1)


Ваша форма должна выглядеть так:

->add('brand')
->add('model')
->add('price')
->add('image', 'vich_image', array(
    'required'      => false,
    'allow_delete'  => true, // not mandatory, default is true
    'download_link' => true, // not mandatory, default is true
));
->add('updatedAt')
->add('sub_rel')

И в вашем интерфейсе, если вы хотите отображать продукты:

<img src="{{ vich_uploader_asset(product, 'image') }}" alt="{{ product.name }}" />

Все это хорошо задокументировано в документации по пакетам: https://github.com/dustin10/VichUploaderBundle/blob/master/Resources/doc/index.md

Я бы предложил использовать LiipImagineBundle для создания всех необходимых эскизов для вашего внешнего / внутреннего интерфейса.

person gvf    schedule 23.06.2015