2016-08-21 2 views
1

Я пытался загрузить несколько файлов в форме, но я просто не могу найти решение, которое будет работать для меня. Всякий раз, когда я добавляю несколько файлов к моему вводу, только один из этих файлов передается контроллеру и загружается.Symfony 3 form multiple file upload issue

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() дает мне строковое значение вместо значения массива, для этого, всякий раз, когда я пытаюсь цикл по каждому элементу это я получаю пустой результат и не загрузки файла.

Я попытался переименовать свою форму изображения виджета «форма [изображения] []» вместо «формы [изображения]», который порождается 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

Вы должны добавить multiple ваших FileType опций поля:

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

Ого, это было действительно глупо LMAO. Большое спасибо! –