2016-08-21 60 views
1

我一直试图上传表单中的多个文件,但我找不到适合我的解决方案。每当我向输入添加多个文件时,只有其中一个文件被传递给控制器​​并上传。Symfony 3表单多个文件上传问题

Controller.php这样

 // File uploading 
     $files = $auto->getImages(); 
     $images = array(); 

     if($files != null) { 
      $key = 0; 

      foreach ($files as $file) 
      { 
       $fileName = md5(uniqid()) . '.' . $file->guessExtension(); 
       $file->move(
        $this->getParameter('car_adds'), 
        $fileName 
       ); 
       $images[$key++] = $fileName; 
      } 
      $auto->setImages($images); 
     } 

$auto->getImages()给了我一个字符串值,而不是一个数组值,为此,每当我试图foreach循环它,我得到一个空的结果,并没有文件上传。

我试图重新命名我的图像格式小部件“的形式[图片] []”而不是“形式[图片]”这是由formbuilder产生然而,当我这样做,我得到以下错误:enter image description here

FormType.php

  ->add('images', FileType::class, array(
      'label' => false, 
      'data_class' => null, 
      'label_attr' => array('class' => $label_offset), 
      'required' => false, 
      'attr' => array(
       'class' => $styles, 
       'multiple' => true))) 

Entity.php

/** 
* @var array 
* 
* @Assert\Image(
*  mimeTypes = { 
* "image/png", 
* "image/pjpeg", 
* "image/jpeg", 
* "image/gif" 
* }, 
*  mimeTypesMessage="Failas yra netinkamo formato", 
*  maxSize = "10M", 
*  maxSizeMessage="Failas yra per didelis" 
*) 
* @ORM\Column(name="images", type="array", nullable=true) 
*/ 
private $images; 

/** 
* Set images 
* 
* @param array $images 
* 
* @return Auto 
*/ 
public function setImages($images) 
{ 
    $this->images = $images; 

    return $this; 
} 

/** 
* Get images 
* 
* @return array 
*/ 
public function getImages() 
{ 
    return $this->images; 
} 

这是我试图建立与Symfony的3所以我假设必须有索姆我的第一个项目这是我可能忽略的东西。

回答

3

您应该添加multipleFileType字段选项:

->add('images', FileType::class, array(
     'multiple' => true, // here it is 
     'label' => false, 
     ... 
+0

哇哦,那真是愚蠢LMAO。非常感谢! –