使用UploadedFile的Symfony多个可选文件

时间:2016-03-12 22:34:04

标签: symfony file-upload symfony-forms

我找到了一个非常好的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;
    }

1 个答案:

答案 0 :(得分:2)

setFiles方法更改为:

public function setFiles($files = null) 

因为$files实体中的Cause属性可以是实例UploadedFile的对象,也可以是UploadedFile个对象的数组或null值,当您提交表单时。< / p>