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

why cannot I delete my image entity using 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;

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

您似乎在 setter 上使用类型提示,例如

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

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

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