Benutzer-Werkzeuge

Webseiten-Werkzeuge


typo3:form

Dies ist eine alte Version des Dokuments!


TYPO3 Form Framework

Einführung

Die neue Form-Extension wird durch die Auszeichnungssprache YAML konfiguriert. Man unterscheidet zwischen Form-Konfiguration und Form-Definition.

Konfiguration von Formularen:

  • globale Einstellungen
  • welche Form-Elemente, Finisher und Validatoren sind verfügbar
  • wie sind diese Objekte vorkonfiguriert
  • wie werden diese Objekte im Frontend und Backend ausgegeben

Definition von Formularen:

  • gilt jeweils für ein einzelnes Formular
  • beschreibt alle gewünschten Formularfelder (Typ, Label, Werte, Validatoren, …)
  • enthält die sog. Finisher, also die gewünschte Verarbeitung der Formulardaten (E-Mail, Speichern in Datenbank, Meldungen im Frontend, …)

Quelle: Form configuration vs. form definition - Arbeitsentwurf der offiziellen Dokumentation


Konfigurationen

Finisher Confirmation: Nachricht in Plugin ändern

Mit der folgenden Konfiguration lässt sich die Nachricht, die nach Absenden des Formulars angezeigt wird, vom Redakteur über das Plugin individuell anpassen.

TYPO3:
  CMS:
    Form:
      prototypes:
        standard:
          finishersDefinition:
            Confirmation:
              FormEngine:
                label: 'formEditor.element.AdvancedPassword.editor.confirmationLabel.predefinedDefaults'
                elements:
                  message:
                    label: 'formEditor.elements.Form.finisher.Confirmation.editor.header.label'
                    config:
                      type: 'input'

Definitionen

Finisher: SaveToDatabase

  • table: Gewünschter Tabellenname
  • mode: 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'

TypoScript

Laut offizieller Dokumentation lässt sich jede Form-Definition mit TypoScript überschreiben.

Default-Werte ü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
                        }
                    }
                }
            }
        }
    }
}
typo3/form.1499276701.txt.gz · Zuletzt geändert: 2017/07/05 19:45 von admin