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 Überarbeitung
Vorherige Überarbeitung
Nächste ÜberarbeitungBeide Seiten, nächste Überarbeitung
typo3:form [2017/07/06 18:49] – Templating admintypo3:form [2018/01/29 21:18] – Personalisierte Anrede in E-Mails 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!
  
 ---- ----
Zeile 258: Zeile 334:
  
 Forge: [[https://forge.typo3.org/issues/80974|Bug #80974: Form Email finisher doesn't support templateRootPaths]] Forge: [[https://forge.typo3.org/issues/80974|Bug #80974: Form Email finisher doesn't support templateRootPaths]]
 +
 +----
 +
 +===== Personalisierte Anrede in E-Mails =====
 +
 +**Form Definition**:
 +<code yaml>
 +renderables:
 +  -
 +    identifier: page-1
 +    label: 'Contact Form'
 +    type: Page
 +    renderables:
 +      -
 +        properties:
 +          options:
 +            Herr: Herr
 +            Frau: Frau
 +          prependOptionLabel: 'Bitte wählen ...'
 +          fluidAdditionalAttributes:
 +            required: required
 +        type: SingleSelect
 +        identifier: title
 +        label: Title
 +        validators:
 +          -
 +            identifier: NotEmpty
 +      -
 +        defaultValue: ''
 +        type: Text
 +        identifier: lastname
 +        label: 'Nachname'
 +        properties:
 +          fluidAdditionalAttributes:
 +            required: required
 +            placeholder: 'Nachname'
 +        validators:
 +          -
 +            identifier: NotEmpty
 +
 +</code>
 +
 +**/Finishers/Email/Html.html:**
 +<code html>
 +<f:switch expression="{form.formState.formValues.title}">
 +    <f:case value="Herr">Sehr geehrter Herr {form.formState.formValues.lastname},</f:case>
 +    <f:case value="Frau">Sehr geehrte Frau {form.formState.formValues.lastname},</f:case>
 +    <f:defaultCase>Sehr geehrte Damen und Herren,</f:defaultCase>
 +</f:switch>
 +
 +</code>
typo3/form.txt · Zuletzt geändert: 2023/04/26 20:02 von admin