Загрузка изображения не работает в VichUploader с EasyAdmin - PullRequest
0 голосов
/ 17 апреля 2019

Я использую VichUploader в конфигурации EasyAdmin (на самом деле это EasyAdminPlus, который немного отличается). Я прочитал всю документацию, связанную с VichUploader, и посмотрел некоторые учебники на YouTube, но не могу найти, где моя ошибка. Когда я загружаю изображение, имя сохраняется как tmp / ... в базе данных, но в загружаемом мной файле ничего не появляется. Может ли кто-нибудь с рысью глазом сказать мне, где моя ошибка? Спасибо!

vichuploader.yaml:

parameters:
    app.path.book_pictures: /uploads/images/books

vich_uploader:
    db_driver: orm

    mappings:
        book_pictures:
            uri_prefix: '%app.path.book_pictures%'
            upload_destination: '%kernel.project_dir%/public/uploads/images/books'
            namer: Vich\UploaderBundle\Naming\UniqidNamer

Часть сущности Book: (обратите внимание, что у меня нет атрибута updated_at, потому что я использую «History».

use Symfony\Component\HttpFoundation\File\File;
use Symfony\Component\HttpFoundation\File\UploadedFile;
use Vich\UploaderBundle\Mapping\Annotation as Vich;

/**
 * @ORM\Entity(repositoryClass="App\Repository\BookRepository")
 * @Vich\Uploadable
 */
class Book
{
    /**
     * @ORM\Column(type="string", length=255, nullable=true)
     * @Gedmo\Versioned
     */
    private $picture;

    /**
     * @Vich\UploadableField(mapping="book_pictures", fileNameProperty="picture")
     * @var File
     */
    private $pictureFile;

/**
     * @return mixed
     */
    public function getPictureFile()
    {
        return $this->pictureFile;
    }

    /**
     * @param File|null $pictureFile
     * @throws \Exception
     */
    public function setPictureFile(File $pictureFile = null)
    {
        $this->pictureFile = $pictureFile;
        if ($this->pictureFile instanceof  UploadedFile) {
            $this->updatedAt = new \DateTime('now');
        }
    }

    public function getPicture(): ?string
    {
        return $this->picture;
    }

    public function setPicture(?string $picture): self
    {
        $this->picture = $picture;

        return $this;
    }

Часть моего Book.yaml (EasyAdminPlus): (здесь я использую «type: file», потому что по непонятной мне причине «type: vich_image» не работает ...)

            new:
                title: title.book.new
                actions: []
                fields:
                    - { property: title, label: field.title }
                    - { property: author, label: field.author, type: easyadmin_autocomplete }
                    - { property: edition, label: field.edition }
                    - { property: publicationYear, label: field.publicationYear }
                    - { property: summary, label: field.summary }
                    - { property: picture, type: file, label: field.picture }

Заранее спасибо за помощь!

...