From edcb3202cb3a2239c06a633473557acfc38e9669 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Guillaume=20Perr=C3=A9al?= <guillaume.perreal@irstea.fr>
Date: Thu, 22 Jan 2015 17:54:54 +0100
Subject: [PATCH] =?UTF-8?q?G=C3=A8re=20les=20collections=20Doctrine=20dans?=
 =?UTF-8?q?=20FileUploadType.?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 Form/Type/FileUploadType.php | 9 +++++++++
 1 file changed, 9 insertions(+)

diff --git a/Form/Type/FileUploadType.php b/Form/Type/FileUploadType.php
index d8a52259..21243424 100644
--- a/Form/Type/FileUploadType.php
+++ b/Form/Type/FileUploadType.php
@@ -10,7 +10,9 @@ namespace Irstea\FileUploadBundle\Form\Type;
 use Irstea\FileUploadBundle\Controller\UploadController;
 use Irstea\FileUploadBundle\Form\DataTranformer\UploadedFileTransformer;
 use Irstea\FileUploadBundle\Service\FileManagerInterface;
+use Symfony\Bridge\Doctrine\Form\DataTransformer\CollectionToArrayTransformer;
 use Symfony\Component\Form\AbstractType;
+use Symfony\Component\Form\Extension\Core\EventListener\MergeCollectionListener;
 use Symfony\Component\Form\Extension\Csrf\CsrfProvider\CsrfProviderInterface;
 use Symfony\Component\Form\FormBuilderInterface;
 use Symfony\Component\Form\FormInterface;
@@ -58,6 +60,12 @@ class FileUploadType extends AbstractType
     public function buildForm(FormBuilderInterface $builder, array $options)
     {
         $builder->setCompound(false);
+
+        if($options['multiple']) {
+            $builder->addEventSubscriber(new MergeCollectionListener(true, true));
+            $builder->addViewTransformer(new CollectionToArrayTransformer());
+        }
+
         $builder->addViewTransformer(new UploadedFileTransformer($this->fileManager, $options['multiple']));
     }
 
@@ -76,6 +84,7 @@ class FileUploadType extends AbstractType
     public function setDefaultOptions(OptionsResolverInterface $resolver)
     {
         $this->setWidgetDefaultOptions($resolver);
+
         $resolver->setDefaults(['max_chunk_size' => $this->maxChunkSize ?: 0]);
         $resolver->setAllowedTypes(['max_chunk_size' => 'int']);
     }
-- 
GitLab