Leider hab ich das Projekt von damals nicht mehr online. In Archivdateien habe ich aber folgenden Workaround gefunden.
Hook registrieren /system/config/dcaconfig.php
PHP-Code:
$GLOBALS['TL_HOOKS']['processEfgFormData']['myCallback'] = array('myEfgFuncs', 'createSerialNo');
Neue Datei /system/modules/efg/myEfgFuncs.php
PHP-Code:
class myEfgFuncs extends Backend
{
public function createSerialNo($arrSubmitted, $arrFiles, $intOldRecordId, $arrFormConfig)
{
// die Serien-Nr muss nur bei Formular 'Anmeldung 2010 DE' generiert werden
if ($arrFormConfig['title'] == 'Anmeldung 2010 DE')
{
// die Anzahl der vorhandenen Datensaetze dieses Formulars ermitteln
$objDataCount = $this->Database->prepare("SELECT count(*) as num FROM besucher_frm")
->execute();
$numData = $objDataCount->fetchAssoc();
$varVal = (int) $numData['num'];
// der neue Datensatz existiert noch nicht in der DB, also Anzahl erhoehen
$varVal += 1;
// ggf . noch links mit nullen auffuellen (hier 5-stellig)
$varVal = str_pad($varVal, 5, "0", STR_PAD_LEFT);
// den Wert im Array $arrSubmitted ueberschreiben
$arrSubmitted['fld_serial_no'] = 'DE'.$varVal;
// Serial in Datenbank speichern
$this->Database->prepare("UPDATE besucher_frm SET fld_serial_no = '".$arrSubmitted['fld_serial_no']."' WHERE name = '".$arrSubmitted['name']."' AND firma = '".$arrSubmitted['firma']."'")->execute();
}
return $arrSubmitted;
}
}
In der Bestätigungsmail kann nun {{form::fld_serial_no}} als Inserttags verwendet werden.
Ich glaub dieser Beitrag hat mir damals geholfen.
Lesezeichen