Der Hook 'processEfgFormData'

Entsprechend des hooks 'processFormData' der TYPOlight Formularklasse stellt EFG in der Klasse Efp mit dem hook 'processEfgFormData' eine Schnittstelle zur Integration eigener Funktionen bereit.

Hiermit können beispielsweise vor Speichern und Versand der Formulardaten Berechnungen durchgeführt werden, die Empfänger einer E-Mail geändert werden u.ä.

Anhand von zwei einfachsten Beispielen soll hier die grundsätzliche Anwendung aufgezeigt werden.

Klasse mit Callback-Funktionen

Die Callback-Funktionen werden in einer PHP-Klasse, z.B. als Datei 'EfgCallbacks.php' im Verzeichnis 'system/modules/efg' gespeichert.
<?php
 
// $arrSubmitted enthalt die POST-Werte
// $arrFiles ggf. Datei-Uploads
// $intOldId die ID des bearbeiteten Datensatzes, im Falle von Frontend-Bearbeitung
// $arrForm enthaelt die 'Formular-Konfiguration'
 
class EfgCallbacks extends Backend
{

	public function exampleCalculate($arrSubmitted, $arrFiles, $intOldId, &$arrForm)
	{
 
		// Einschraenkung auf das Formular
		if ($arrSubmitted['FORM_SUBMIT'] == 'auto_form_15')
		{
			
			// addieren von Werten mehrerer Formularfelder, Übertragen der Summe 
			$arrSubmitted['summenfeld'] = $arrSubmitted['feld_1'] + $arrSubmitted['feld_2'] + $arrSubmitted['feld_3'];
			
		}

		return $arrSubmitted;
 
	}


	public function exampleMailRecipient($arrSubmitted, $arrFiles, $intOldId, &$arrForm)
	{
 
		// Einschraenkung auf das Formular
		if ($arrSubmitted['FORM_SUBMIT'] == 'auto_form_15')
		{
			// überschreiben des Wertes von 'Empfänger-Adresse' mit dem Wert aus einem Fomularfeld
			$arrForm['formattedMailRecipient'] = $arrSubmitted['FELDNAME_DES_ADRESS_FELDES'];
		}

		return $arrSubmitted;
 
	}
	
}
?>

Registrierung der Callback-Funktionen

Die Callback-Funktionen werden durch Eintrag der folgenden Zeilen in der Datei system/config/dcaconfig.php registriert
$GLOBALS['TL_HOOKS']['processEfgFormData']['callback_01'] = array('EfgCallbacks', 'exampleCalculate');
$GLOBALS['TL_HOOKS']['processEfgFormData']['callback_02'] = array('EfgCallbacks', 'exampleMailRecipient');