2016-08-21 7 views
1

私はフォームに複数のファイルをアップロードしようとしていますが、私にとってはうまくいく解決策を見つけることができません。入力に複数のファイルを追加すると、そのファイルの1つだけがコントローラに渡されてアップロードされます。私はそれは私が空の結果となし、ファイルのアップロードを取得するループをforeachのためにしようとするたびにController.phpSymfony 3フォーム複数のファイルアップロードの問題

 // 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()

は、私の文字列値の代わりに、配列値を与え、そのため。

私が「フォーム[画像] []」の代わりに、私は次のエラーを取得することを行うときしかし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

あなたのFileTypeフィールドオプションにmultipleを追加する必要があります

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

すごいああ、本当に愚かなLMAOました。ありがとう、たくさんの男! –

関連する問題