Multiple file upload with Symfony2

后端 未结 11 867
温柔的废话
温柔的废话 2020-12-01 02:12

I\'m trying to upload multiple files via a form, but I can only upload one file at a time, the last one I mark in the browser. Is there a way to upload more images with Symf

11条回答
  •  清歌不尽
    2020-12-01 03:06

    Ok binding issue solved (enctype syntax error) : i'll give you the code i use. maybe it will help...

    I have a Gallery Entity

    class Gallery
    {
        protected $id;
        protected $name;
        protected $description;
        private $urlName;
        public $files; // the array which will contain the array of Uploadedfiles
    
        // GETTERS & SETTERS ...
    
        public function getFiles() {
            return $this->files;
        }
        public function setFiles(array $files) {
            $this->files = $files;
        }
    
        public function __construct() {
            $files = array();
        }
    }
    

    I have a form class that generate the form

    class Create extends AbstractType {
    
        public function buildForm(FormBuilder $builder, array $options) {
    
            $builder->add('name','text',array(
                "label" => "Name",
                "required" => TRUE,
            ));
            $builder->add('description','textarea',array(
                "label" => "Description",
                "required" => FALSE,
            ));
            $builder->add('files','file',array(
                "label" => "Fichiers",
                "required" => FALSE,
                "attr" => array(
                    "accept" => "image/*",
                    "multiple" => "multiple",
                )
            ));
        }
    }
    

    Now in the controller

    class GalleryController extends Controller
    {
        public function createAction() {
            $gallery = new Gallery();
            $form = $this->createForm(new Create(), $gallery);
            // Altering the input field name attribute
            $formView = $form->createView();
            $formView->getChild('files')->set('full_name', 'create[files][]');
    
            $request = $this->getRequest();
            if($request->getMethod() == "POST")
            {
                $form->bindRequest($request);
    
                // print "
    ".print_r($gallery->getFiles(),1)."
    "; if($form->isValid()) { // Do what you want with your files $this->get('gallery_manager')->save($gallery); return $this->redirect($this->generateUrl("_gallery_overview")); } } return $this->render("GalleryBundle:Admin:create.html.twig", array("form" => $formView)); } }

    Hope this help...

    NB: If someone know a better way to alter this f** name attribute, maybe in the FormView class or by declaring a new field type, feel free to show us your method...

提交回复
热议问题