我找到了一个非常好的article用于向我的项目添加多个文件上传,但是我试图让文件上传成为可选项。
如果我编辑我的文档,如果我不包含文件,它将失败,并显示以下错误。
不确定这个问题的好处是什么。任何建议都非常赞赏。
错误:
捕获致命错误:参数1传递给 AppBundle \ Entity \ Cause :: setFiles()必须是。的实例 Symfony \ Component \ HttpFoundation \ File \ UploadedFile,null给定,调用 在
这是我的原因文档
的上传方法/**
* @ORM\PreFlush()
*/
public function upload()
{
foreach($this->uploadedFiles as $uploadedFile)
{
$file = new Imagefile();
$filename = sha1(uniqid(mt_rand(), true)).'.'.$uploadedFile->guessExtension();
$url1 = $this->getUploadDir();
$path = "/".$url1."/".$filename;
$file->setPath($path);
$file->setSize($uploadedFile->getClientSize());
$file->setName($uploadedFile->getClientOriginalName());
$uploadedFile->move($this->getUploadDir(), $path);
$this->getFiles()->add($file);
$file->setCause($this);
unset($uploadedFile);
}
}
-- Setter --
/**
* Add files
* @param UploadedFile $files
*/
public function setFiles(uploadedFile $files)
{
$this->uploadedFiles[] = $files;
return $this;
}
答案 0 :(得分:2)
将setFiles
方法更改为:
public function setFiles($files = null)
因为$files
实体中的Cause
属性可以是实例UploadedFile
的对象,也可以是UploadedFile
个对象的数组或null值,当您提交表单时。< / p>