Contao-Hooks am Beispiel von processFormData
Contao bietet eine Menge an Hooks an, mit denen der Core erweitert werden kann. Eine Übersicht aller Hooks ist auf der Projektseite von Contao zu finden.
Darunter befindet sich auch processFormData
, das ausgeführt wird, nachdem ein Formular abgeschickt wurde. Es kann z.B. dafür verwendet werden, um die im Formular eingegebenen Daten zu verarbeiten. Als Parameter, die an die Funktion übergeben werden, stehen die Formulardaten, das DCA und die mitgeschickten Dateien zur Verfügung.
Welche Argumente an andere Hooks übergeben werden, ist in der oben angesprochenen Referenz zu finden.
Einen Hook registrieren
Um nun einem bestimmten Event eine eigene Funktion zuzuweisen, muss diese in Contao registriert werden:
$GLOBALS['TL_HOOKS']['processFormData'][] = array('MyFormClass', 'MyDataProcessing');
Mit dieser Anweisung führt Contao die Funktion MyDataProcessing
aus, welche in der Klasse MyFormClass
, in der Datei MyFormClass.php
, zu finden ist. Diese Zeile kann entweder in der Datei
/system/config/dcaconfig.php
oder aber in der config/config.php
des noch zu definierenden Moduls stehen. Klasse und Datei, in der sich die Klasse befindet, müssen stets den gleichen Namen haben.
Das Modul anlegen
Damit MyFormClass
auch irgendwo an passender Stelle definiert werden kann, wird ein neues Modul in
/system/modules/
angelegt, dessen Name frei wählbar ist. Ein Contao-Modul hat immer folgende Verzeichnisstruktur:
MyModule/config/
MyModule/classes/
Im Verzeichnis classes/
wird anschließend die bereits oben angesprochene Datei MyFormClass.php
abgelegt. Je nach Art der Modulregistrierung folgt zum Schluss noch die Datei config.php
im Verzeichnis config/
. Das Modul hat somit seine benötigte Struktur.
Die eigentliche Funktion
Alles, was jetzt noch zum Loslegen fehlt, sind die folgenden Zeilen:
<?php
class MyFormClass {
public function MyDataProcessing($formData, $formDCA, $formFiles) {
// mein Code
}
}
?>
Der Rest liegt an dir und den Anforderungen.
Bleibt noch die Installation des Moduls
Nachdem das Modul und die Klasse soweit vorhanden sind, muss es noch in Contao installiert werden. Dazu loggt man sich im Backend ein.
Der Autoload-Creator ist das Mittel der Wahl. In der folgenden Liste wird das erstellte Modul ausgewählt. Zum Schluss legt Contao mit einem Klick auf "Autoload-Dateien erstellen" zwei Dateien mit dem Namen autoload.ini
und autoload.php
an.
Die Vorarbeit ist damit getan. Ab sofort wird bei jedem Absenden eines Formulars eigener Code ausgeführt.