почему я не могу удалить свое изображение с помощью VichUploader?

Я работаю с Symfony 4 и Doctrine. Для управления изображениями я использую VichUploader.

Я создаю изображение объекта, и когда я использую этот объект для добавления новых изображений, он работает как шарм, но когда я хочу удалить его с помощью своего контроллера:

    public function delete(Image $image):Response
    {
        $em = $this->getDoctrine()->getEntityManager();
        $em->remove($image);
        $em->flush();

        return new RedirectResponse($this->generateUrl('image-index'));
    }

Я получаю странную ошибку:

Expected argument of type "string", "NULL" given at property path "fileName".

с `имя файла как таковое в моем объекте изображения:

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

    /**
     *
     * @ORM\Column(type="string", length=255, nullable=true)
     * @var string|null
     */
    private $fileName;

Такое же поведение проявляется при редактировании объекта. Вы видите что-нибудь, что я сделал неправильно?


person Pierrick Rambaud    schedule 11.03.2019    source источник


Ответы (1)


Похоже, вы используете тип, намекающий на ваш сеттер, что-то вроде

pubilc function setFileName(string $name): void
{
    $this->fileName = $name;
}

Вам нужно использовать менее строгий тип, например:

pubilc function setFileName(?string $name): void
{
    $this->fileName = $name;
}
person Massimiliano Arione    schedule 22.03.2019
comment
это было! Большое спасибо. Это поле было автоматически сгенерировано Symfony 4 с помощью команды make:entity --regenerate В следующий раз я буду внимательнее. - person Pierrick Rambaud; 22.03.2019