Auch zum Thema Erstentwicklung mit Hooks
Ich habe schon den ganzen Tag alle möglichen Beiträge zum Thema Hooks gelesen,
Eurer Beitrag hat mich schon näher gebracht. Allerdings bekomme ich es nicht hin, trotz Beschreibung den "processFormData" hook zu handeln.
Ich benötige für ein Formular (alles Radiobuttons) eine Berechnung der ausgefüllten Werte, deswegen habe ich mit dem Formulargenerator ein Formular mit Radiobuttons erstellt und wollte nun eine Funktion zur Manipulation der Werte schreiben:
Ich habe ein Modul angelegt modules/myModule
darin /config/config.php:
$GLOBALS['TL_HOOKS']['processFormData'][] = array('myCustomModuleClass', 'myCustomClassMethod');
myModule/myCustomModuleClass.php:
class myCustomModuleClass // Make sure this class name matches the first item in the above line of code
{
public function __construct() {}
public function myCustomClassMethod($arrPost, $arrForm, $arrFiles)
{
echo "Hello Welt; //um erstmal zu sehen ob überhaupt was passiert
print_r($arrPost);
exit;
}
}
autoload.php:
ClassLoader::addClasses(array
(
'Contao\myCustomModuleClass' => 'system/modules/myModule/myCustomModuleClass.php',
));
Wahrscheinlich habe ich eine grundsätzlichen Denkfehler, ich fange gerade erst mit der Contao Entwicklung an. Wäre sehr dankbar für eure Hilfe !!
LG Jens
E-Mail Benachrichtigung bei Absenden des Formulars Kundendaten
Hallo allerseits,
ich lese mich schon eine ganze Weile durch diverse Beiträge zum Thema Hooks, komme aber nicht so richtig weiter. Und dies scheint mir der richtige Platz für meine Frage zu sein.
Zur Problematik:
Ich habe in einem geschützten Mitgliederbereich eine Seite mit den Kundendaten, die zum Teil durch den Kunden aktualisiert werden können (Mail Adresse, Geburtsdatum). Die Kundendaten selbst werden aber über eine Schnittstelle aus einer externen Datenquelle befüllt bzw. aktualisiert. Um nun Änderungen, die vom Kunden selbst vorgenommen werden, in die Quelldatenbank einpflegen zu können, damit diese bei der nächsten Synchronisation nicht wieder mit den alten (falschen) Daten überschrieben werden, wäre es hilfreich, nach der Änderung durch den Kunden, eine E-Mail zu verschicken, in der die aktuellen Werte stehen und der Betreiber somit informiert wird und die Quelldaten entsprechend aktualisieren kann.
Das ich dazu den "processFormData-Hook" benötige ist soweit klar, nur wie muss ich nun vorgehen, um die Anpassungen einzubinden? Kann ich dazu das Benachrichtigungscenter verwenden (ist dies sinnvoll)? Wenn ja, wie funktioniert das?
Da ich selbst kein PHP-Experte bin, aber Jemanden kenne, der dies umsetzt, der aber mit der Contao-Entwicklung nicht vertraut ist, bräuchte ich eine kurze Anleitung, um ihm dies zu vermitteln.
Für sachdienliche Hinweise wäre ich sehr dankbar.
Gruß Thomas
Liste der Anhänge anzeigen (Anzahl: 1)
Hi Thomas,
eigentlich wollte ich dir eine Anleitung schreiben. Nach den ersten 20 Zeilen musste ich dann jedoch feststellen, dass es für mich einfacher ist, dir das komplette Modul zu programmieren ;-)
Anbei das Modul. Kopiere dir den Inhalt der Datei unter /system/modules
Danach gehst du in Contao in die Erweiterungsverwaltung und machst ein Datenbankupdate, damit die 3 Felder angelegt werden. Als nächstes gehst du nun in dein Modul (Persönliche Daten) und kannst ganz unten nun den Punkt aktivieren ob für dieses Formular bei einem Update die Daten verschickt werden.
Feature: du kannst einen individuellen Betreff wählen und zusätzlich die E-Mail an mehrere Adressen schicken. Einfach mit Komma trennen.
Wenn du wissen willst, wie das funktioniert, sieh dir den Quelltext an. Dort habe ich dir einige Kommentare hinterlassen. Denke das ist am einfachsten (für uns beide)
Gruß Michael
Edit: Sollte sowohl unter Contao 2 als auch Contao 3 laufen :-)
Liste der Anhänge anzeigen (Anzahl: 1)
Hi Thomas,
habe dir nun im Modul unterhalb von den E-Mailangaben noch die verfügbaren Mitgliederfelder eingebaut. So kannst du nun exakt auswählen, welche Felder übermittelt werden :-)
Ersetz den Inhalt einfach und mach danach bitte noch ein Datenbankupdate, es kam noch ein weiteres Datenbankfeld hinzu.
Nur bei bestimmten Feldern reagieren...
Hallo Michael,
danke für dein tolles Tool! Ich habe noch zwei Fragen:
1. Was muss ich ändern, damit der Hook nicht immer reagiert, sondern nur bei Änderung von E-Mail, Handynummer und Ort bspw. nicht aber bei Änderung von PW oder BN.
2. Was muss ich ändern, damit in der E-Mail steht: "User XYZ hat folgende Werte geändert: E-Mail, Handynummer" Der Hook also erkennt welches Feld tatsächlich geändert wurde und davon den Feldnamen übermittelt aber nicht den gespeicherten Wert.
Es wäre super, wenn du mich da unterstützen könntest.
lg Timo