Hi Leute.
Ich brauch ein System in dem ich via Drag & Drop viele Fotos hochladen kann. Einzelne Dateien hab ich bislang über das FileReference System von Helmut Hummel realisiert. Das funktioniert auch super. Theoretisch ist mir auch klar wie man mehrere Dateien hochladen kann, aber bei so ner richtigen Galerie will man, dass das ja automatisiert passiert und nicht Feld um Feld erzeugen und mit ner Datei füllen.
Dazu habe ich jetzt media_upload gefunden, die das System http://fineuploader.com/ verwendet.
Das ist auch ganz gut beschrieben und das Widget scheint so weit zu funktionieren, allerdings funktioniert dann der Controller scheinbar nicht. Liegt wohl auch daran, dass das via Ajax funktionieren sollte, und ich hier rein gar nichts dafür konfiguriert hab. Hab mit Ajax noch nie gearbeitet.
Kann mir jemand sagen was an all dem so stimmt?
Das Formular zum Upload liegt im Controller editDateien.
Derzeit hab ich mal alle Arguments bis zum Model in dem die Fotos hinzugefügt werden übergeben. Das funktioniert in allen anderen Controllern auch prächtig.
Hier liegt das Formular und es wird auch das Widget für den Upload generiert. So weit auch gut.
Wenn ich jetzt Fotos auswähle wird gleich mal ein Ladebalken sichtbar, der das scheinbar auch wirklich hochlädt. Zumindest sagt mir das die Statusanzeige im Browser. Dann gib es allerdings ne Fehlermeldung: Upload failed Also eigentlich gar kein Hinweis.
Da das ganze allerdings via Ajax funktionieren muss und ich hier gar nichts gemacht hab, kann ich mir gut vorstellen, dass das nicht funktioniert.
Kann mir jemand sagen was alles gemacht werden muss, damit das funktioniert und mal in meinen Controller gucken, ob das grundsätzlich funktionieren kann?
/** * action editDateien * * @param \Vendor\Extension\Domain\Model\Kuenstlerprofil $kuenstlerprofil * @param \Vendor\Extension\Domain\Model\Engagement $engagement * @param \Vendor\Extension\Domain\Model\Multimedia $foto * @param string $typ * @param string $ziel */ public function editDateienAction( \Vendor\Extension\Domain\Model\Kuenstlerprofil $kuenstlerprofil, \Vendor\Extension\Domain\Model\Engagement $engagement, \Vendor\Extension\Domain\Model\Multimedia $foto) { $this->view->assign('kuenstlerprofil',$kuenstlerprofil); $this->view->assign('engagement',$engagement); $this->view->assign('foto',$foto); if ($this->request->hasArgument('typ')){ $typ = $this->request->getArgument('typ'); $this->view->assign('typ',$typ); } if ($this->request->hasArgument('ziel')){ $ziel = $this->request->getArgument('ziel'); $this->view->assign('ziel',$ziel); } } /** * action createDateien * * @param \Vendor\Extension\Domain\Model\Kuenstlerprofil $kuenstlerprofil * @param \Vendor\Extension\Domain\Model\Engagement $engagement * @param \Vendor\Extension\Domain\Model\Multimedia $foto * @param string $typ * @param string $ziel */ public function createDateienAction( \Vendor\Extension\Domain\Model\Kuenstlerprofil $kuenstlerprofil, \Vendor\Extension\Domain\Model\Engagement $engagement, \Vendor\Extension\Domain\Model\Multimedia $foto) { /** @var array $uploadedFiles */ $uploadedFiles = $this->uploadFileService->getUploadedFiles(); # A property name is needed in case specified in the Fluid Widget # <mu:widget.upload property="foo"/> $uploadedFiles = $this->uploadFileService->getUploadedFiles('dateien'); # Process uploaded files and move them into a Resource Storage (FAL) foreach($uploadedFiles as $uploadedFile) { /** @var \Fab\MediaUpload\UploadedFile $uploadedFile */ $uploadedFile->getTemporaryFileNameAndPath(); $storage = ResourceFactory::getInstance()->getStorageObject(1); /** @var File $file */ $file = $storage->addUploadedFile( $uploadedFile->getTemporaryFileNameAndPath(), $storage->getRootLevelFolder(), $uploadedFile->getFileName(), 'changeName' ); // Create File Reference $newFileReference = $this->objectManager->get('AArtists\\AaosSystem\\Domain\\Model\\FileReference'); $newFileReference->setFile($file); $foto->setDateien($newFileReference); } }
Ja so weit so gut. Wie gesagt... Jetzt stellt sich die Frage wie das mit Ajax funktionieren soll.
Das ist übrigens media_upload.
Hier zu finden: https://github.com/fabarea/media_upload
lg M.