我使用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;
在编辑实体时出现相同的行为。你看到我做错了什么吗?
感谢您的帮助
答案 0 :(得分:2)
您似乎在设置器上使用了类型提示,类似
pubilc function setFileName(string $name): void
{
$this->fileName = $name;
}
您需要使用不太严格的类型,例如:
pubilc function setFileName(?string $name): void
{
$this->fileName = $name;
}