Zum Inhalt springen

Hook vor dem Anzeigen eines Datensatzes im Backend

Erstellt am 17. Mai 2010 · 4 Antworten · letzte Antwort am 23. Dezember 2011

Tags: TCA, Frage

Hamsta ·

Das Problem ist folgendes:

Ich habe einen Datensatz mit entspechenden Feldern dazu in der DB.
Jetzt benötige ich aber Felder bzw ein Feld für diesen datensatzt der nicht in der entsprechenden Tabelle zu finden ist.

Die in dem noch fehlenden Feld anzuzeigenden / änderbaren Daten Sollen an anderer Stelle in die Datenbank geschrieben werden.

Wonach ich suche bzw was ich brauche:

Ich brüchte dementsprechen einen Hook der aufgerufen wird kurz befor der Datensatz angezeigt wird und in dem ich die angezeigten felder bearbeiten / ändern kann.

Nach folgendem schema:

"*MausKlick* Datensatz öffnen -> HOOK ausführen/aufrufen -> Datenzatz im BE anzeigen"

Was ich schon gefunden habe:
Die Hooks in

$TYPO3_CONF_VARS[SC_OPTIONS][t3lib/class.t3lib_tcemain.php]

hab ich gefunden, udn die funktionieren auch. Nur halt alle nach dem speichern / ändern / löschen etc.

#angry#

Wonach such ich am besten?

Gibt es andere hooks im BE auser diesen?

processDatamapClass,processCmdmapClass,moveRecordClass

Eventuell ein anderer lösungsansatz?

Anmerkung warum ich nicht einfach die Tabelle in der DB erweitere:
Dazu müsste ich eine Tabelle der Extension sowie die be_users/fe_users und die tt_address tabelle erweitern, was ich möglichst vermeiden will. (Kein Eingriff ins System oder andere Extensions)

Gruß und Danke schonmal,
Hamsta

Hamsta ·

Ich habe inzwischen einen Ansatz bzw ein paar Hooks gefunden.

Das Problem wird zwar noch nicht gelöst aber ich bin dem schon näher.

Ich konnte noch ein paar Hooks ausfindig machen

Zuerst Dieser für den Kompletten Datensatz

$GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['t3lib/class.t3lib_tceforms.php']['getMainFieldsClass'][]

function getMainFields_preProcess($table, &$row, $sender)

diese 3 werden nacheinander für jedes Datenbankfeld aufgerufen

für Feld1 -> hook1 -> hook2 -> hook3
für Feld2 -> hook1 -> hook2 -> hook3
usw

$GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['t3lib/class.t3lib_tceforms.php']['getSingleFieldClass'][]

function getSingleField_preProcess($table, $field, &$row, &$altName, $palette, $extra, $pal, $sender)
function getSingleField_beforeRender($table, $field, &$row, $PA)
function getSingleField_postProcess(&$table, $field, &$row, &$out, $PA, $sender)

zum Schluss noch Dieser für den Kompletten Datensatz

$GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['t3lib/class.t3lib_tceforms.php']['getMainFieldsClass'][]

function getMainFields_postProcess($table, &$row, $sender)

zu meinem bedauern musste ich leider feststellen das sämtliche Datenbankabfragen stattfinden bevor irgendein Hook aufgerufen wird (hab mich durchs BE 'geDebugged').

Hamsta ·

hmm.. inzwischen hab ich die lösung für das Problem gefunden... dummerweise erinner ich mich nicht mehr wirklich was ich gemacht hab :o.

aber es geht.. irgendwie....

also für die die gleichartiges suchen.. nicht aufgeben!...

sobald mir einfällt wie ich das gemacht habe schreib ichs hier noch rein o.O

gruß Hamsta

_Andreas_ ·

Hallo Hamsta,

Hamsta schrieb

sobald mir einfällt wie ich das gemacht habe schreib ichs hier noch rein o.O

könntest Du vielleicht in Deinem Code nachschauen, wie Du das gelöst hattest?
Ich bräuchte auch einen Hook, der VOR den Datenbankabfragen beim Öffnen eines Records im Backend ausgeführt wird.

Vielen Dank im Voraus
Andreas

LuP ·

bei mir funktioniert es mit getMainFields_preProcess()

$GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['t3lib/class.t3lib_tceforms.php']['getMainFieldsClass']['my_ext'] = 'EXT:my_ext/hooks/class.tx_myext_tceforms_hooks.php:tx_myext_tceforms_hooks';

class tx_myext_tceforms_hooks {
  function getMainFields_preProcess($table, $row, $pObj){
    // do something
  }
}