Aufsetzen eines Mailformulars (multistep und conditions) mit der TYPO3 Extension formhandler

Als erstes legt man einen Datensatz mit dem formhandler Plugin an. Sämtliche Felder der Flexform bleiben leer, die Konfiguration geschieht, außer was die E-Mail Empfänger Angaben angeht, ausschließlich über TypoScript.

Hinweis: Das hier beschriebene Vorgehen ist mittlerweile überholt, da die entsprechenden Beispieldateien nicht mehr in der Extension vorhanden sind. Am besten kann man sich hier orientieren. Wenn jemand dennoch die im Folgenden dargestellten Schritte nachvollziehen möchte, so kann er oder sie sich die Beispieldateien hier herunterladen.

Sodann kopiert man sich das entsprechende Beispiel HTML Template (typo3conf/ext/formhandler/Examples/MultiStepConditions/template.html) in den fileadmin Ordner und das Beispiel Typoscript (typo3conf/ext/formhandler/Examples/MultiStepConditions/typoscript_setup.txt) in ein Extension Template, das man auf der Seite mit dem formhandler Datensatz anlegt. Im TypoScript wird folgendes entfernt: .predef.multistep_conditions_example (das kommt viermal vor). Die Folge ist, dass in der Flexform kein vordefiniertes Formular angezeigt wird. Das braucht man nicht, wenn man, wie gesagt, die Konfiguration über TypoScript erledigt.

Hat man dies getan, sollte im Frontend ein Formular mit 3 Schritten und einer Bedingung (“… kontaktieren Sie mich …”) angezeigt werden.

Als erstes wird die E-Mailadresse des Formular Empfängers geändert und das Template, das sich im fileadmin Ordner befindet verwendet:
Für ersteres verwenden wir die Flexform (“Admin E-Mail Einstellungen” / “Empfänger”) für letzteres das TypoScript in Zeile 87 z.B. so:

#templateFile = EXT:formhandler/Examples/MultiStepConditions/template.html
templateFile = fileadmin/templates/erweiterungen/formhandler_multistep.html

Das Formular sollte jetzt funktionieren und eine – unvollständige – Mail versenden.
Dann werden im TypoScript alle “pid” Angaben auf die pid der Seite geändert, auf der sich das Fomular befindet.
Schickt man das Formular jetzt noch einmal ab, wird man feststellen, dass ein versteckter Datensatz ohne weiteren Inhalt auf der Seite des Plugins angelegt wurde. Dies ist der TypoScript Konfiguration in Zeile 134 ff (finishers.1) geschuldet. Ich brauche das zunächst nicht und entferne die Zeilen 136 – 158. Will man die Daten des Formulars nach dem Absenden in eine bestimmte Datenbanktabelle schreiben, ist hier der Ansatzpunkt dafür.

Als nächstes möchte ich die Zielseite, bzw. den Text, der nach dem Absenden angezeigt wird, ändern. Dazu füge ich dem Typoscript einen “finisher” hinzu und zwar vor der bereits vorhandenen Klasse “Tx_Formhandler_Finisher_Mail”:

...
  finishers {
    1.class = Tx_Formhandler_Finisher_Redirect
    1.config.redirectPage = 63
...

Jetzt ändere ich das HTML Template, wobei ich keine Mehrsprachigkeit benötige und somit die entsprechenden Platzhalter entferne mitsamt der xml Datei für die Übersetzungen und die Label direkt benenne.

Ist man soweit gekommen, hat man ein gutes Stück erreicht und ist in der Lage selbst weiter zu machen. Daher sollen ein paar abschließende Tipps genügen:

- plugin.Tx_Formhandler.settings.1 setzt Bedingungen und Pflichtfelder für Step 1 im HTML Formular (<!-- ###TEMPLATE_FORM1### -->)
- plugin.Tx_Formhandler.settings.2 setzt Bedingungen und Pflichtfelder für Step 2 im HTML Formular (<!-- ###TEMPLATE_FORM2### -->) usw.

- hat man in Step 1 eine Condition gesetzt, z.B. so:

plugin.Tx_Formhandler.settings.1 {
  if.1 {
    conditions {
      OR1 {
        AND1 = geschlecht = weiblich
      }
    }
    isTrue {
      2 {
        templateSuffix = _weiblich
      }
    }
  }
}

so wird der nächste Step sowohl mit <!-- ###TEMPLATE_FORM2### --> als auch mit <!-- ###TEMPLATE_FORM2_weiblich### --> gewrapt. Außerdem müssen alle weiteren Steps ebenfalls doppelt gewrapt werden, <!-- ###TEMPLATE_FORM3### --> und auch <!-- ###TEMPLATE_FORM3_weiblich### --> usw.

Will man in Step 1 etwas abfragen, aber erst z.B. in Step 5 entsprechend unterschiedliche Inhalte zur Verfügung stellen, so schreibt man obige Condition so um:

plugin.Tx_Formhandler.settings.1 {
  if.1 {
    conditions {
      OR1 {
        AND1 = geschlecht = weiblich
      }
    }
    isTrue {
      5 {
        templateSuffix = _weiblich
      }
    }
  }
}

Dann benötigt man bis zu Step 5 natürlich keine doppelten Wraps.

- Fügt man neue Felder hinzu, so müssen die entspechenden Variablen in die E-Mail übernommen werden, sofern man das will (z.B. hierhin: <!-- ###TEMPLATE_EMAIL_ADMIN_HTML### begin -->…)

- Benötigt man Pflichtfelder, so tut die XML Datei gute Dienste. Hier kann die Ersetzung des Markers ###error_Name### festgelegt werden:

<?xml version="1.0" encoding="utf-8" standalone="yes">
<T3locallang>
  <data type="array">
    <languageKey index="de" type="array">
      <label index="error_Name_required">Bitte geben Sie Ihren Namen an</label>     
    </languageKey>  
  </data>
</T3locallang>

Pflichtfelder werden per Typoscript so gesetzt:

plugin.Tx_Formhandler.settings.1{
  validators.1{
    class = Tx_Formhandler_Validator_Default
    config.fieldConf{
        Name {
            errorCheck.1 = required
        }      
     } 
  }
}

Ein Gedanke zu „Aufsetzen eines Mailformulars (multistep und conditions) mit der TYPO3 Extension formhandler

Kommentare sind geschlossen.