为什么不能使用VichUploader删除图像实体?

时间:2019-03-11 19:55:06

标签: php symfony vichuploaderbundle

我使用Symphony 4和Doctrine,并且我正在使用vinchUploader管理我的图像。

我创建了一个实体图像,当我使用该实体添加新图像时,它就像一个超级按钮一样工作,但是当我想用控制器删除它时:

    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".

“文件名”在我的Image实体中是这样的:

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

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

在编辑实体时出现相同的行为。你看到我做错了什么吗?

感谢您的帮助

1 个答案:

答案 0 :(得分:2)

您似乎在设置器上使用了类型提示,类似

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

您需要使用不太严格的类型,例如:

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