Как сохранить / добавить изображение в Symfony 4.2 Admin с помощью VichUploader Bundle - PullRequest
0 голосов
/ 24 апреля 2019

У меня есть 2 таблицы:

product: id, name

image: id, product_id, path

Когда я нажимаю «Изменить» изображение и нажимаю «Обновить», все поля «изображения» обновляются успешно, кроме «пути»

Когда я нажимаю «Добавить новое изображение» и нажимаю «Создать», возникает ошибка: не удалось создать объект: App \ Entity \ Image

Я знаю, что это ошибка загрузки файла, но я не знаю, как это исправить. Вот мой код:

services.yaml

parameters:
    app.path.product_images: /uploads/product'

vich_uploader.yaml


vich_uploader:
    db_driver: orm

    mappings:
        product_images:
            uri_prefix: '%app.path.product_images%'
            upload_destination: '%kernel.project_dir%/public%app.path.product_images%'

Изображение Entity

<?php

namespace App\Entity;

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

/**
 * @ORM\Entity(repositoryClass="App\Repository\ImageRepository")
 */
class Image
{
    /**
     * @ORM\Id()
     * @ORM\GeneratedValue()
     * @ORM\Column(type="integer")
     */
    private $id;

    /**
     * @ORM\Column(type="string", length=255)
     * @var string $path
     */
    private $path;

    /**
     * @ORM\ManyToOne(targetEntity="App\Entity\Product", inversedBy="images")
     */
    private $product;

    /**
     * @Vich\UploadableField(mapping="image", fileNameProperty="path")
     * @var File $imageFile
     */
    private $imageFile;

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

    /**
     * @param File
     */
    public function setImageFile(File $path = null)
    {
        $this->imageFile = $path;
    }

    public function __toString()
    {
        return (string) $this->getName();
    }

    public function getId(): ?int
    {
        return $this->id;
    }

    public function getPath(): ?string
    {
        return $this->path;
    }

    public function setPath(string $path): self
    {
        $this->path = $path;

        return $this;
    }
}

ImageAdmin.php

protected function configureFormFields(FormMapper $formMapper): void
    {
        $formMapper
            ->add('id')
            ->add('imageFile',FileType::class,[
                'label' => 'Image file'
            ])
            ->add('product', ModelType::class,[
                'label'=>'Product name'
            ])
            ;
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...