Web Dev Blog

Artikel lesen

Contao-Hooks am Beispiel von processFormData

von Daniel Erlinger

von Daniel Erlinger

Ansicht des Backends von Contao

Hooks sind Funktionen, die zu bestimmten Ereignissen im Frontend der Contao-Seite ausgeführt werden können.

Achtung! Dieser Beitrag ist älter als 5 Jahre. Sein Inhalt kann veraltet sein und sollte deshalb mit Vorsicht genossen werden.

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.

Zurück zur Newsübersicht

Ihnen gefällt das was Sie sehen?

Gern können wir darüber sprechen. Schreiben Sie mir oder rufen mich an.

Meine Kontaktdetails Referenzen ansehen