2016-08-21 57 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。非常感謝! –