Daten in ein „formhandler“ Formular übertragen

Für komplexe Formulare, die redaktionell nicht bearbeitet werden müssen, ist die TYPO3 Extension „formhandler“ erste Wahl.

In einem früheren Artikel habe ich bereits beschrieben, wie man ein multistep Formular mit condition aufsetzt. Mittlerweile hat sich die Extension weiter entwickelt und verfügt über eine hervorragende Dokumentation: examples.typo3-formhandler.com. Ich hatte ebenfalls bereits beschrieben, wie man in TYPO3 Daten aus einem Formular auf eine andere Seite übertragen kann.

Um beides zusammen zu bringen benötigt man auf der Seite, von der aus auf formhandler verlinkt werden soll, ein Formular, das z.B. so aussieht:

<form method="POST" action="index.php?id=100">
  <input type="hidden" name="myinput" value="der Value">
  <input class="btn btn-primary" type="submit" value="Abschicken">
</form>

formhandler benötigt nun ein input Feld mit der id „myfield“. Mit folgendem TypoScript übernimmt formhandler den übermittelten Wert in das Formular:

plugin.Tx_Formhandler.settings {  
  preProcessors {
    1.class = Tx_Formhandler_PreProcessor_LoadDefaultValues
       1.config {
       #Prefill field in step 1
       1 {
        myfield.defaultValue = TEXT
        myfield.defaultValue.data = GP:myinput
      }
    }
  }
}

Weitere Tipps zu formhandler: Conditions im mastertemplate, Umbenennen der Labels in der Bestätigungsmail

Folgende Anforderung: in der Bestätigungsmail an den Absender des Formulars soll zum einen die Ansprache geschlechtsspezifisch sein zum zweiten sollen die Namen der hochgeladenen Dateien mit aufgeführt werden. Da hier im Formular selbst ein sehr langer Erklärungstext als Label verwendet wird, soll dieser in der Bestätigungsmail abgekürzt werden und lediglich durch das Wort „Uploads:“ ersetzt werden.

Ersteres erledigt man über die bereits im Formular vorhandene Select-Box „Anrede“ (name: anrede, option value: Herr bzw. Frau). Im Mastertemplate setzt man innerhalb des Bereichs <!-- ###master_email-user-start-plain### --> und <!-- ###master_email-user-start-html### --> folgende Marker:

###IF_anrede=Frau###
###LLL:greetings-female### ###value_lastname###,
###IF_anrede=Frau###
###IF_anrede=Herr###
###LLL:greetings### ###value_lastname###,
###IF_anrede=Herr###

In der Datei „lang.xml“ fügt man dieses hinzu:

<label index="greetings">Sehr geehrter Herr</label>
<label index="greetings-female">Sehr geehrte Frau</label>

Was die hochgeladenen Dateien angeht, so muss man einen entsprechenden Marker im Template „email-user.html“ unterbringen. Sofern dieses Template noch nicht existiert, kann man es anlegen, indem man das „email-admin.html“ Template kopiert und umbenennt. Hinzugefügt werden dann diese beiden Marker:

###master_email-line-plain-file_file###
###master_email-line-html-file_file###

Zu Umbenennung des Labels schaut man wieder ins mastertemplate.html und fügt folgendes hinzu:

<!-- ###master_email-line-plain-file### -->
Uploads: ###value_###fieldname######
<!-- ###master_email-line-plain-file### -->
...
<!-- ###master_email-line-html-file### -->
<tr>
	<td valign="top"><strong>Uploads:</strong></td>
	<td>###value_###fieldname######</td>
</tr>
<!-- ###master_email-line-html-file### -->

Man sieht, dass damit die Mehrsprachigkeit nicht mehr gewährleistet ist. Benötigt man diese, so muss man statt „Uploads“ eben einen entsprechenden Marker verwenden und in „lang.xml“ verarbeiten.

Formhandler, neue Felder anlegen und die lang.xml

Es kommt vor, dass neue Felder, die man in der HTML Datei angelegt hat und in der lang.xml entsprechend benannt hat, ohne Label angezeigt werden. Oder, dass die Änderungen, die man in der XML Datei gemacht hat, „nicht ums Verrecken“ übernommen werden. In all diesen Fällen hilft das Löschen des „System Caches“ (seit TYPO3 Version 6.2). Dies geschieht entweder über das Install Tool („Important actions“ / „clear all cache“) oder – einfacher – man schreibt folgende Zeite ins TSConfig des Users:

options.clearCache.system = 1

Dann hat man einen dritten Blitz im Backend zum Cache Löschen zur Verfügung.