MODx: eForm mit Eventfunktionen erweitern

von Thomas Jakobi am Sonntag, 27. April 2008 um 13:05 Uhr.

eForm ist ein MODx-Snippet welches das CMS um Formularauswertung und -validierung erweitert. Dazu enthält es viele eingebaute Funktionen. Sollten diese einmal nicht ausreichen, lässt sich das Snippet an verschiedenen Stellen im Ablauf der Formularverarbeitung durch eigene Funktionen erweitern.

Diese Erweiterungspunkte von eForm werden in der Dokumentation als Eventfunktionen definiert. Insgesamt gibt es fünf verschiedene Events an denen per eForm-Parameter eine vorher definierte Funktion aufgerufen werden kann:

eFormOnBeforeMailSent
Diese Funktion wird aufgerufen, nachdem das Formular validiert worden ist und bevor der 'report'-Chunk und der 'thankyou'-Chunk geparst wird und die Mails verschickt werden. Mit dieser Funktion kann man z.B. Formular-Inhalte in der MODx-Datenbank abspeichern und den Erfolg/Misserfolg dieser Speicherung an einen Platzhalter im 'report'- und 'thankyou'-Chunk übergeben. Diese Funktion wird auch dann ausgeführt, wenn &noemail=`1` gesetzt ist.

eFormOnMailSent

Diese Funktion wird aufgerufen, nachdem der 'report'-Chunk und der 'thankyou'-Chunk geparst und die Mails verschickt worden sind. Mit dieser Funktion kann man z.B. am Schlusspunkt der Formularverarbeitung vorher definierte und nun unnötige Session-Daten löschen. Wenn &to nicht gesetzt worden ist oder keine valide Adresse angegeben wurde, wird die Funktion nicht ausgeführt.

eFormOnBeforeFormParse
Diese Funktion wird aufgerufen, nachdem die Templates geladen und die 'formid' validiert worden ist. Mit dieser Funktion sind z.B. allgemeine Formular- und Report-Templates um seitenspezifische Besonderheiten erweiterbar.

eFormOnBeforeFormMerge
Diese Funktion wird aufgerufen, wenn das Formular zur Darstellung vorbereitet wird und bevor die Platzhalter in das Formular eingesetzt werden. Mit dieser Funktion lassen sich Platzhalter im Formular vor der Darstellung verändern.

eFormOnValidate
Diese Funktion wird aufgerufen, nachdem das Formular validiert worden ist und bevor die Validierungsnachricht am Bildschirm ausgegeben wird. Mit dieser Funktion ist eine zusätzliche Validierungslogik (z.B. bei Feldabhängigkeiten) implementierbar.

Diese Funktionen können per Parameter an eForm übergeben werden. Z.B. gibt der Parameter &eFormOnBeforeMailSent=`eform2db` an, dass die Funktion eform2db beim oben genannten Event aufgerufen wird. Die Funktion muss in einem weiteren Snippet definiert werden und der Snippetaufruf vor dem eForm-Snippetaufruf im MODx-Dokumentcode eingefügt werden.

Die Artikelreihe zu den eForm Eventfunktionen umfasst mittlerweile folgende Texte: