Hier werden die Unterschiede zwischen zwei Versionen der Seite angezeigt.
Beide Seiten, vorherige ÜberarbeitungVorherige ÜberarbeitungNächste Überarbeitung | Vorherige Überarbeitung | ||
typo3:form [2017/07/06 18:49] – Templating admin | typo3:form [2023/04/26 20:02] (aktuell) – [Finisher: SaveToDatabase und Datei-Upload] admin | ||
---|---|---|---|
Zeile 97: | Zeile 97: | ||
mapOnDatabaseColumn: | mapOnDatabaseColumn: | ||
</ | </ | ||
+ | |||
+ | ==== Finisher: SaveToDatabase und Datei-Upload ==== | ||
+ | |||
+ | Wenn das Formular ein Feld des Typs // | ||
+ | |||
+ | Mit dem '' | ||
+ | * In einer eigenen Tabelle für Formular-Einträge wird die UID des // | ||
+ | * In der Tabelle // | ||
+ | |||
+ | Im TYPO3-Backend ist die hochgeladene Datei damit korrekt dem Datensatz in der eigenen Datenbanktabelle zugeordnet. | ||
+ | |||
+ | <code yaml> | ||
+ | type: Form | ||
+ | identifier: UploadForm | ||
+ | label: ' | ||
+ | prototypeName: | ||
+ | finishers: | ||
+ | - | ||
+ | identifier: SaveToDatabase | ||
+ | options: | ||
+ | - | ||
+ | table: ' | ||
+ | mode: insert | ||
+ | databaseColumnMappings: | ||
+ | pid: | ||
+ | value: 6 | ||
+ | crdate: | ||
+ | value: ' | ||
+ | tstamp: | ||
+ | value: ' | ||
+ | formtitle: | ||
+ | value: ' | ||
+ | elements: | ||
+ | fileupload: | ||
+ | mapOnDatabaseColumn: | ||
+ | - | ||
+ | table: sys_file_reference | ||
+ | mode: insert | ||
+ | elements: | ||
+ | fileupload: | ||
+ | mapOnDatabaseColumn: | ||
+ | databaseColumnMappings: | ||
+ | # Achtung: ab TYPO3 v12 müssen die beiden nachfolgenden Zeilen entfernt werden! | ||
+ | table_local: | ||
+ | value: ' | ||
+ | tablenames: | ||
+ | value: ' | ||
+ | fieldname: | ||
+ | value: ' | ||
+ | tstamp: | ||
+ | value: ' | ||
+ | crdate: | ||
+ | value: ' | ||
+ | uid_foreign: | ||
+ | value: ' | ||
+ | renderables: | ||
+ | - | ||
+ | type: Page | ||
+ | identifier: page-1 | ||
+ | label: Page | ||
+ | renderables: | ||
+ | - | ||
+ | properties: | ||
+ | saveToFileMount: | ||
+ | allowedMimeTypes: | ||
+ | - application/ | ||
+ | fluidAdditionalAttributes: | ||
+ | required: required | ||
+ | type: FileUpload | ||
+ | identifier: fileupload | ||
+ | label: 'Datei hochladen' | ||
+ | validators: | ||
+ | - | ||
+ | identifier: NotEmpty | ||
+ | </ | ||
+ | |||
+ | Der Ruhm hierfür gilt **Olaf Schmidt-Wischhöfer**; | ||
---- | ---- | ||
Zeile 211: | Zeile 288: | ||
===== Templating ===== | ===== Templating ===== | ||
+ | ==== Formular in Fluid-Template rendern ==== | ||
+ | |||
+ | Aufgrund eines Bugs können Formulare nur mit einem Workaround in Website-Templates integriert werden. | ||
+ | |||
+ | - Issue: https:// | ||
+ | |||
+ | **TypoScript: | ||
+ | <code typoscript> | ||
+ | lib.embeddedForm = FLUIDTEMPLATE | ||
+ | lib.embeddedForm { | ||
+ | template = TEXT | ||
+ | template { | ||
+ | value = < | ||
+ | } | ||
+ | extbase { | ||
+ | pluginName = Formframework | ||
+ | controllerExtensionName = Form | ||
+ | controllerName = FormFrontend | ||
+ | controllerActionName = perform | ||
+ | } | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | **Fluid:** | ||
+ | <code html> | ||
+ | < | ||
+ | </ | ||
+ | |||
+ | Danke an Daniel Siepmann, der die Lösung am 6. Oktober 2020 in Slack gepostet hat! | ||
+ | |||
+ | ---- | ||
==== templateRootPaths für Formulare einrichten ==== | ==== templateRootPaths für Formulare einrichten ==== | ||
Zeile 258: | Zeile 366: | ||
Forge: [[https:// | Forge: [[https:// | ||
+ | |||
+ | ---- | ||
+ | |||
+ | ===== Personalisierte Anrede in E-Mails ===== | ||
+ | |||
+ | **Form Definition**: | ||
+ | <code yaml> | ||
+ | renderables: | ||
+ | - | ||
+ | identifier: page-1 | ||
+ | label: ' | ||
+ | type: Page | ||
+ | renderables: | ||
+ | - | ||
+ | properties: | ||
+ | options: | ||
+ | Herr: Herr | ||
+ | Frau: Frau | ||
+ | prependOptionLabel: | ||
+ | fluidAdditionalAttributes: | ||
+ | required: required | ||
+ | type: SingleSelect | ||
+ | identifier: title | ||
+ | label: Title | ||
+ | validators: | ||
+ | - | ||
+ | identifier: NotEmpty | ||
+ | - | ||
+ | defaultValue: | ||
+ | type: Text | ||
+ | identifier: lastname | ||
+ | label: ' | ||
+ | properties: | ||
+ | fluidAdditionalAttributes: | ||
+ | required: required | ||
+ | placeholder: | ||
+ | validators: | ||
+ | - | ||
+ | identifier: NotEmpty | ||
+ | |||
+ | </ | ||
+ | |||
+ | **/ | ||
+ | <code html> | ||
+ | < | ||
+ | <f:case value=" | ||
+ | <f:case value=" | ||
+ | < | ||
+ | </ | ||
+ | |||
+ | </ |