Dies ist eine alte Version des Dokuments!
Die neue Form-Extension wird durch die Auszeichnungssprache YAML konfiguriert. Man unterscheidet zwischen Form-Konfiguration und Form-Definition.
Quelle: Form configuration vs. form definition - Arbeitsentwurf der offiziellen Dokumentation
table
: Gewünschter Tabellennamemode
: insert oder update. Letztere Option benötigt auch die Anweisung whereClause
databaseColumnMappings
: Hiermit lassen sich Werte in die Datenbank schreiben, die nicht in Formularfeldern stehen.elements
: Auflistung der Formularfelder, deren Inhalte in die Datenbank geschrieben werden sollen. Logischerweise müssen die mit mapOnDatabaseColumn
deklarierten Datenbankfelder auch vorhanden sein.
{__currentTimestamp}
ist ein spezieller Wert, der den aktuellen Unix-Timestamp zurückgibt.
Wichtig ist die Schreibweise als Array innerhalb von options
mittels Bindestrich -
, sonst erhält man beim Absenden des Formulars eine TYPO3 Exception.
Details sind in der offiziellen Dokumentation (Arbeitsentwurf) zu finden.
finishers: - identifier: SaveToDatabase options: - table: 'tx_formtemplates_domain_model_data' mode: insert databaseColumnMappings: pid: value: 123 tstamp: value: '{__currentTimestamp}' elements: company: mapOnDatabaseColumn: 'company' title: mapOnDatabaseColumn: 'title' firstname: mapOnDatabaseColumn: 'firstname' lastname: mapOnDatabaseColumn: 'lastname' email: mapOnDatabaseColumn: 'email' street: mapOnDatabaseColumn: 'street' zipcode: mapOnDatabaseColumn: 'zipcode' phone: mapOnDatabaseColumn: 'phone' message: mapOnDatabaseColumn: 'message'
Laut offizieller Dokumentation lässt sich jede Form-Definition mit TypoScript überschreiben.
Ein möglicher Anwendungsfall ist, den Titel der aktuellen Seite im Formular mit zu übergeben. Oder einen GET-Parameter auszulesen und damit ein Feld vorauszufüllen. Mit TypoScript, formDefinitionOverrides
und getText können Formularfelder dynamisch befüllt werden.
Die Anzahl und Verschachtelung der renderables
sowie die Indexnummer des Feldes ist für jedes Formular individuell verschieden, da es von den verwendeten Feldern und der Nutzung von Fieldsets und Grids abhängt. Im Zweifelsfall kann man im Fluid-Template mit <f:debug>{form.currentPage}</f:debug>
die Verschachtelung im Frontend ausgeben.
plugin.tx_form.settings { formDefinitionOverrides { // bitte den richtigen Identifier eintragen: identifier_des_formulars { renderables { 0 { renderables { // Indexnummer 0 { defaultValue = TEXT defaultValue.data = page:title } 2 { label = TEXT label.value = Alternatives Label für Feld } } } } } } }