Einfacher mit TYPO3 arbeiten
In einer eigenen Extension kommt es durchaus vor, dass man eigene DB-Felder aus anderen DB-Feldern füllen möchte ohne dass BE-User darauf Zugriff haben. Z.B. kann man ein Namens-Feld aus den beiden Feldern Vorname und Nachname füllen lassen. Dies geht in TYPO3 mit Hilfe von Hooks:
Erst muss natürlich das DB-Feld angelegt werden (z.B. ext_tables.sql oder direkt).
Anschließend muss der Hook registriert werden (in ext_localconf.php):
require_once(t3lib_extMgm::extPath('myext').'class.tx_myext.php');
$GLOBALS ['TYPO3_CONF_VARS']['SC_OPTIONS']['t3lib/class.t3lib_tcemain.php']['processDatamapClass'][] = 'tx_myext';
Dann noch die Funktion erstellen, die vom Hook aufgerufen wird (class.myext.php):
class tx_myext {
public function processDatamap_postProcessFieldArray ($status, $table, $id, &$fieldArray, &$reference) {
if ($table == 'mytable') {
$row = t3lib_BEfunc::getRecord ($table, $id);
$GLOBALS['TYPO3_DB']->exec_UPDATEquery($table, "uid=$id", $updArray);
}
}
}
Hier wird der Hook postProcessFieldArray (die Funktion wird nach dem eigentlichen Speichern aufgerufen) verwendet - es gibt auch auch noch weitere Hooks (z.B. preProcessFieldArray für einen Aufruf vorm Speichern). Die Reihenfolge der Parameter ist dabei natürlich zu beachten.
Mehr Informationen zur Verwendung von Hooks gibt es hier.