Benutzer-Werkzeuge

Webseiten-Werkzeuge


typo3:form

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen der Seite angezeigt.

Link zu der Vergleichsansicht

Beide Seiten, vorherige ÜberarbeitungVorherige Überarbeitung
Nächste ÜberarbeitungBeide Seiten, nächste Überarbeitung
typo3:form [2017/07/06 18:49] – Templating admintypo3:form [2017/07/10 22:45] – Finisher: SaveToDatabase und Datei-Upload admin
Zeile 97: Zeile 97:
             mapOnDatabaseColumn: 'message'             mapOnDatabaseColumn: 'message'
 </code> </code>
 +
 +==== Finisher: SaveToDatabase und Datei-Upload ====
 +
 +Wenn das Formular ein Feld des Typs //FileUpload// oder //ImageUpload// enthält, wird beim Hochladen der Datei automatisch ein Eintrag in der Datenbanktabelle //sys_file// erzeugt.
 +
 +Mit dem ''SaveToDatabase'' Finisher lassen sich nun die benötigten Datei-Referenzen erzeugen:
 +  * In einer eigenen Tabelle für Formular-Einträge wird die UID des //sys_file//-Eintrags gespeichert.
 +  * In der Tabelle //sys_file_reference// wird diese UID auf das Feld ''uid_local'' gemappt. Außerdem werden in weiteren Feldern der eigene Tabellenname, das dazugehörige Feld und – unter ''uid_foreign'' – die UID des neu angelegten Datensatzes in der eigenen Tabelle referenziert.
 +
 +Im TYPO3-Backend ist die hochgeladene Datei damit korrekt dem Datensatz in der eigenen Datenbanktabelle zugeordnet.
 +
 +<code yaml>
 +type: Form
 +identifier: UploadForm
 +label: 'Upload form'
 +prototypeName: standard
 +finishers:
 +  -
 +    identifier: SaveToDatabase
 +    options:
 +      -
 +        table: 'tx_deine_datenbanktabelle'
 +        mode: insert
 +        databaseColumnMappings:
 +          pid:
 +            value: 6
 +          crdate:
 +            value: '{__currentTimestamp}'
 +          tstamp:
 +            value: '{__currentTimestamp}'
 +          formtitle:
 +            value: 'Upload form'
 +        elements:
 +          fileupload:
 +            mapOnDatabaseColumn: 'feld_in_deiner_datenbanktabelle'
 +      -
 +        table: sys_file_reference
 +        mode: insert
 +        elements:
 +          fileupload:
 +            mapOnDatabaseColumn: 'uid_local'
 +        databaseColumnMappings:
 +          table_local:
 +            value: 'sys_file'
 +          tablenames:
 +            value: 'tx_deine_datenbanktabelle'
 +          fieldname:
 +            value: 'feld_in_deiner_datenbanktabelle'
 +          tstamp:
 +            value: '{__currentTimestamp}'
 +          crdate:
 +            value: '{__currentTimestamp}'
 +          uid_foreign:
 +            value: '{SaveToDatabase.insertedUids.0}'
 +renderables:
 +  -
 +    type: Page
 +    identifier: page-1
 +    label: Page
 +    renderables:
 +      -
 +        properties:
 +          saveToFileMount: '1:/user_upload/'
 +          allowedMimeTypes:
 +            - application/pdf
 +          fluidAdditionalAttributes:
 +            required: required
 +        type: FileUpload
 +        identifier: fileupload
 +        label: 'Datei hochladen'
 +        validators:
 +          -
 +            identifier: NotEmpty
 +</code>
 +
 +Der Ruhm hierfür gilt **Olaf Schmidt-Wischhöfer**; er hat die Lösung am 26. Juni 2017 in Slack veröffentlicht!
  
 ---- ----
typo3/form.txt · Zuletzt geändert: 2023/04/26 20:02 von admin