SonataAdmin + VichUploader не загружает изображение

Я настроил VichUploaderBundle с SonataAdmin, и я не хочу, чтобы категория загружала изображение с помощью сонаты.

Форма отображается в порядке, сохранение объекта в порядке, отправка с составными данными и изображение там. Но это не сохраняется, и нет ошибки или что-то для устранения этого.

конфигурации:

vich_uploader:
db_driver: orm
mappings:
category_image:
uri_prefix: /uploads/images/category
upload_destination: %kernel.root_dir%/../web/uploads/images/category
inject_on_load: true
delete_on_remove: true
delete_on_update: true
namer: vich_uploader.namer_origname

CategoryAdmin:

        $formMapper
->add('title', 'text', ['label' => 'title'])
->add('description', 'textarea', ['required' => false, 'label' => 'description'])
->add('image', 'file',
[
'required' => false,
'label' => 'image',
'data_class' => 'Symfony\Component\HttpFoundation\File\File',
'attr' => ['class' => 'sonata-medium-file'],
]
);

CategoryEntity:

/**
* @ORM\Column(type="string", length=255, name="image_name", nullable=true)
*/
protected $imageName;
/**
* @Assert\File(
*     groups={"list"},
*     maxSize="500k",
*     mimeTypes={"image/png", "image/jpeg", "image/pjpeg"},
*     mimeTypesMessage = "constraint.mime_type"* )
* @Vich\UploadableField(
*     mapping="category_image",
*     fileNameProperty="imageName"* )
* @var File $image
*/
protected $image;

POST: содержание

Content-Disposition: form-data; name="s5519586317457[image]"; filename="ico.png"

Тип контента: изображение / PNG

форма файла

1

Решение

С VichUploaderBundle и Doctrine нужно знать две вещи:

  • если единственное поле, обновляемое формой, это файл, Doctrine не обнаружит изменение и оно не будет сохранено (это ссылка на сайт объясняет почему и как обойти это);
  • комплект запускает механизм загрузки только тогда, когда Symfony\Component\HttpFoundation\File\UploadedFile объекты присутствуют в загружаемых полях, так что определение data_class Вариант для ваших полей нарушает это (вы можете безопасно удалить его).

N.B : вы также можете проверить, что ваша сущность определена как @Vich\Uploadable

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]