Getreu nach dem Motto : Der Mensch ist faul, der Programmierer auch ;-)
Contao selbst, nutzt recht viel Ajax Funktionalitaet im Backend. Hierfuer wurden in der 2.6.1 auch die Hooks executePreActions & executePostActions eingefuehrt.
Die Nutzung der Hooks in Verbindung mit eigenen Erweiterungen kann manchmal sehr aufwendig sein, da der JS Anteil eigens angepasst werden muss.
In meinen Entwicklung reduzierte sich dies sehr oft auf Verifizierung von Eingabenfeldern und Masken.
Um den Programmieraufwand hierbei deutlich zu reduzieren habe ich eine WrapperKlasse gebaut. Der GenericAjaxRequest generiert mir einen JS onclick part fuer Buttons oder Links.
Grundlage ist das Contao Framework mit seinem beiden Hooks, die normal eingebunden werden muessen.
Es muss nur der ActionString und eine ID fuer die Ausgabe definiert werden. Hiermit kann im Pre & PostHook auf die Aktion reagiert werden.
Zusaetzlich kann aber auch noch ein Array angegeben werden, welches die IDs der mit zu uebermittelnden EingabeFelder in der Form enthaelt.
All diese Daten gehen nun ueber das normale MooTools Framework an meinen Widget-Callback des Hooks und dieser kann damit die Ausgabe generieren, welche dann im vorgegebenen Container dargestellt wird.
Ist der AusgabeContainer nicht im Dokument enthalten, wird das aufrufende Element mit der generierten Ausgabe belegt. Somit koennen auch einmalige Abfragen/Kontrollen durchgefuehrt werden.
Beispiel ist hier : http://dev.typolight-forge.org/wiki/genericajaxrequest
Das Modul selbst hier : http://dev.typolight-forge.org/proje...ricajaxrequest
So siehts dann nur noch im Quelltext aus :
Code:
$ajax = new GenericAjaxRequest();
$sWizard .= sprintf('<a href="'.$this->Environment->request.'&action=ftpcheck" onclick="Backend.getScrollOffset(); %s">Testen</a> ',
$ajax->generateAjaxRequestString('ftpcheck','OutputDIV',array('ctrl_immo_url','ctrl_immo_path','ctrl_immo_username')));
Wenn der executePostRequest registriert wurde, kann man dann dort mittels $action='ftpcheck' auf den Reqeust reagieren und seine Arbeiten erledigen.
Alles weitere ist im obigen Link ins Wiki erklaert.
Es befinden sich noch nicht im ER, schreibt, wenn ihr noch Ideen und Vorschlaege habt.
Lesezeichen