Zum Inhalt springen

Dateiupload wirft Exeption, Array wird nicht richtig gemappt

Erstellt am 12. April 2018 · 2 Antworten · letzte Antwort am 18. April 2018

Tags: Datei-Upload, TYPO3 7, Frage

toosha ·

Hallo zusammen

Ich versuche gerade eine eigene Extension mit einem Fileupload zu ergänzen. Der View ist, wie ich annehme, fehlerfrei. Trotzdem der betroffene Abschnitt:

<f:form action="upload" enctype="multipart/form-data" name="uploadCSV" object="{uploadCsv}" method="post" controller="Export">
  <f:form.hidden name="action" value="upload" />
  <:form.hidden name="controller" value="Export" />
  <f:form.upload property="file" />
  <f:form.submit value="Hochladen" />
</f:form>

Übergeben wird also an den ExportController bzw. die uploadAction.
Da ich den Upload ohne FAL machen möchte, habe ich eine initializeAction, die mir das mappen übernimmt:

/**
 * initialize action
 */
public function initializeAction() {
  if ($this->arguments->hasArgument('uploadCsv')) {
  $this->arguments->getArgument('uploadCsv')->getPropertyMappingConfiguration()->setTargetTypeForSubProperty('file', 'array');
  }
}

Die uploadAction verlangt dann ein Object wie folgt:

/**
 * action upload
 * 
 * @param \Tx_Calendarassistant_Domain_Model_Export $uploadCsv
 * @return void
 */
public function uploadAction(\Tx_Calendarassistant_Domain_Model_Export $uploadCsv) {
  ...
}

Allerdings wirft Extbase vorher eine Exeption:
#1298012500: Required argument "uploadCsv" is not set for OLGHTK\Calendarassistant\Controller\ExportController->upload.
Ich habe einige Beispiele auf meiner Lösungssuche im Internet gefunden, die aber alle in Grunde gleich aussehen. Was könnte ich übersehen haben?

Danke für jeglichen Tipp.
Gruss
Thomas

Julian.​Hofmann ·

Hallo Thomas.

Fileuploads aus dem FE sind etwas tricky mit Extbase.

Ein recht gutes Beispiel hat Helmut Hummel in seinem Blog (http://insight.helhum.io/post/85015526410/file-upload-using-extbase-and-fal-in-typo3-62) erklärt und eine Beispiel-Extension auf GitHub bereitgestellt: https://github.com/helhum/upload_example

Hab Deinen Code nicht groß angeguckt (Leider ist die code-Formatierung hier im Forum auch nach rund einem Jahr noch immer kaputt und erschwert so das Lesen). Helmut verbaut aber einiges mehr als Klassen bzw. Methoden. Anhand seines Beispiels läuft bei mir ein Upload erfolgreich.

Viele Grüße aus Würzburg
Julian