Tabelle oder div << ^ MPForm Hilfeseiten ^ >> Formularschleifen
MPForm-Dokumentation: Private Funktionen
Schwierigkeitsgrad C
Ein Modul für LEPTON kann bei vielen Anwendern alle Anwendungsfälle "erschlagen". Manche Kunden haben jedoch Wünsche oder Anforderungen, die besondere Funktionalitäten voraussetzen. Selbst auf einer Website können mehrere Formulare vorhanden sein, die aber unterschiedlich funktionieren sollen. Um flexibel auf solche Anforderungen reagieren zu können, sind Schnittstellen zu mehreren privaten Funktionen in das Modul eingebaut. Diese Funktionen gehören in die Datei private.php. Der Vorteil der Bündelung des eigenen Programmcodes in einer separaten Datei dürfte einleuchtend sein: vor dem Einspielen von Updates müssen Sie ansonsten Quellcode von alten und neuen Dateien vergleichen und jede Änderung an die richtige Stelle in den neuen Dateien kopieren. Mit der Auslagerung aller Anpassungen in die Datei private.php fällt diese Arbeit weg. Die Datei private.php wird beim Upgrade nicht mit aktualisiert. Anpassungen der vorgeschlagenen Beispiele in neueren Versionen müssen Sie gegebenenfalls selbst aus private.default.php übernehmen
Folgende privaten Funktionen sind vorhanden:
- function private_function_before_new_form($section_id)
- Wird aufgerufen, bevor ein Formular zusammengebaut wird. Hier kann man z.B. Feldinhalte je nach zuvor besuchter Seite vorbelegen.
- function private_function_before_email($section_id, &$html_data_user, &$html_data_site)
- Wird aufgerufen, nachdem ein Formular erfolgreich ausgefüllt wurde, aber bevor es verschickt und gespeichert wird. Hier könnte man also z.B. Benachrichtigungstexte anpassen. Dabei gibt es den Benachrichtigungstext an den Sitebetreiber und denjenigen an den Benutzer.
- private_function_after_email($section_id, &$html_data_site, &$mpform_fields)
- Wird aufgerufen, nachdem ein Formular erfolgreich ausgefüllt und verschickt wurde, aber bevor es
in der Datenbank gespeichert wird. Eventuell soll der Inhalt in der Datenbank in einem anderen
Format abgelegt werden, so dass es leichter zu verarbeiten ist, aber in der Benachrichtigungsmail
sollte der Originalinhalt verschickt werden. Dann ist hier die richtige Stelle, um diese Anpassung
vorzunehmen
$html_data_site
wird in der Submissions-Tabelle gespeichert und$mpform_fields
enthält die SQL-Statements für die Results-Tabelle. Auch hier gibt es zwei Varianten: - private_function_on_success($section_id)
- Wird aufgerufen, nachdem ein Formular erfolgreich ausgefüllt und gespeichert wurde. Hier kann man z.B. dynamisch die Folgeseite umschalten.
Damit die Funktion nicht bei jedem Formular das gleiche macht, sollte man zuvor die Variable
$section_id
abfragen und nur bei Übereinstimmung die benötigten Aktionen
durchführen.
Der Rückgabewert sollte ein Boolscher Wert sein, allerdings verwendet ihn momentan private_function_before_new_form noch nicht. Bei allen anderen: FALSE dient zum Abbrechen des regulären Programmflusses, bei TRUE geht die Ausführung weiter.
Auf der nächsten Seite gibt es ein Beispiel aus der Praxis: die Programmierung einer Formularschleife.