2016-07-19 16 views
3

Ich baue eine Funktion mehrere Bilder auf unserer Website zu laden, und bisher habe ich dies als meine Upload-Formular:Mehrere Bilder hochladen nur ein Bild in Symfony 3 hochladen?

<?php 
namespace Tyson\AdminBundle\Form; 

use Doctrine\ORM\EntityRepository; 
use Symfony\Component\Form\AbstractType; 
use Symfony\Component\Form\FormBuilderInterface; 
use Symfony\Component\Form\Extension\Core\Type\SubmitType; 

use Symfony\Component\Form\Extension\Core\Type\FileType; 
use Symfony\Component\Form\Extension\Core\Type\IntegerType; 

class IuType extends AbstractType 
{ 

    public function buildForm(FormBuilderInterface $builder, array $options) 
    { 

     $builder->add('id', IntegerType::class); 
     $builder->add('image', FileType::class, array(
      'attr' => array(
       'multiple' => 'true', 
       'data_class' => null 
      ) 
     )); 
    } 

    public function getName() 
    { 
     return 'iu'; 
    } 

} 

Diese dann auf dem Zweig wie diese Datei angezeigt wird:

<div class="tabs-panel" id="panel3v"> 
     {{ form_start(iu,{action:path('admin_upload-images')}) }} 

     <div class="row"> 
      <div class="small-3 medium-3 large-3 columns field-label"> 
       <label>Image ID</label> 
      </div> 
      <div class="small-9 medium-9 large-9 columns"> 
       {{ form_widget(iu.id) }} 
       {{ form_errors(iu.id) }} 
      </div> 
     </div> 

     <div class="row"> 
      <div class="small-3 medium-3 large-3 columns field-label"> 
       <label>Image Upload</label> 
      </div> 
      <div class="small-9 medium-9 large-9 columns"> 
       {{ form_widget(iu.image) }} 
       {{ form_errors(iu.image) }} 
      </div> 
     </div> 

     <div class="row"> 
      <div class="small-6 medium-6 large-6 columns"> 
       <button type="submit" class="button" id="saveBtn">Save Changes</button> 
      </div> 
     </div> 

     {{ form_end(iu) }} 
    </div> 

Wenn dies gesendet wird, gebe ich beim Testen aus, was vom Formular an den Controller übergeben wird. Dies ist die Ausgabe:

[files] => Symfony\Component\HttpFoundation\FileBag Object 
    (
     [parameters:protected] => Array 
      (
       [iu] => Array 
        (
         [image] => Symfony\Component\HttpFoundation\File\UploadedFile Object 
          (
           [test:Symfony\Component\HttpFoundation\File\UploadedFile:private] => 
           [originalName:Symfony\Component\HttpFoundation\File\UploadedFile:private] => CnY8dRqXYAAoaAw.jpg 
           [mimeType:Symfony\Component\HttpFoundation\File\UploadedFile:private] => image/jpeg 
           [size:Symfony\Component\HttpFoundation\File\UploadedFile:private] => 35164 
           [error:Symfony\Component\HttpFoundation\File\UploadedFile:private] => 0 
           [pathName:SplFileInfo:private] => /tmp/phpibZuVW 
           [fileName:SplFileInfo:private] => phpibZuVW 
          ) 

        ) 

      ) 

ich ein Bild auswählen können, oder 100 Bilder, und ist immer noch die Form vorbei mir nur ein Bild, bevor die Steuerung etwas anderes tut.

als Referenz, dann ist dies der Code für mein Controller so weit:

<?php 

namespace Tyson\AdminBundle\Controller; 

use Symfony\Bundle\FrameworkBundle\Controller\Controller; 
use Symfony\Component\Security\Core\SecurityContext; 
use Symfony\Component\Security\Core\User\UserInterface; 

use Tyson\CoreBundle\Entity\Images; 

use Symfony\Component\HttpFoundation\Request; 
use Symfony\Component\HttpFoundation\Cookie; 
use Symfony\Component\HttpFoundation\Session\Session; 
use Symfony\Component\Form\Form; 
use Symfony\Component\HttpFoundation\Response; 
use Symfony\Component\HttpFoundation\RedirectResponse; 
use Symfony\Component\HttpFoundation\JsonResponse; 
use Symfony\Component\Filesystem\Filesystem; 
use Symfony\Component\Filesystem\Exception\IOExceptionInterface; 

use Symfony\Component\HttpFoundation\File\UploadedFile; 

class UploadController extends Controller 
{ 
    public function uploadimagesAction(Request $request) 
    { 

     $fs = new Filesystem(); 

     $dm = $this->getDoctrine()->getManager(); 

     $dir = '/var/www/html/tyson/web/uploads/images/'; 

     $request = $this->get('request_stack')->getCurrentRequest(); 

     $formdet = $request->request->get('iu'); 
     $imgId = $formdet['id']; 

     $folderPath = '/var/www/html/tyson/web/uploads/images/'.$imgId; 
     $imgDirectory = '/var/www/html/tyson/web/uploads/images/'.$imgId.'/'; 

     $folderCheck = $fs->exists($folderPath); 

     print_r($request); 
     die(); 

    } 

} 

Ich könnte mir vorstellen, dass die file Ausgabe an die Steuerung mehr als ein Bild enthalten soll (wie die Form einmal vorgelegt wird, nicht wiederholt), was mache ich falsch damit?

Antwort

0

Das gleiche Problem bilden mich

  $builder->add('files', FileType::class, array('required' => false, 
      'mapped' => false, 
      'attr' => array(
       'multiple' => true 
      ), 
     )); 

nur eine Datei eingereicht wird. Keine Lösung für mich jetzt, ich werde [] mit Javascript zum Upload-Namen hinzufügen.