Hallo Leute,
ich möchte folgendes machen: Mit dem Extension-Kickstarter eine neu Tabelle erstellen, nennen wir sie mal "Beispieltabelle".
Diese Tabelle erhält ein Häckchen bei "Allowed on pages:" damit die Datensätze im Backend erstellt werden können.
Weiter bekommt sie drei Felder:
- "Feld 1" mit "Field type: Not editable, only displayed"
- "Feld 2" mit "Field type: string input"
- "Feld 3" mit "Field type: string input"
Soweit so gut. Bis hierhin komme ich.
Nun möchte ich, dass beim abspeichern des Datensatzes in "Feld 1" automatisch der Inhalt von "Feld 2" UND "Feld 3" durch ein beliebiges, von mir definiertes, Trennzeichen getrennt abgespeichert wird.
Und hier brauche ich hilfe. Ich Vermute, dass ich hierfür irgendwas in einer der vom Kickstarter erzeugten Dateien im PHP-Code ändern muss. Ich weis aber nicht wo und was.
Kann mir hier bitte jemand helfen?
ich arbeite erst seid Kurzem mit dem Kickstarter und beschäftige mich auch erst seid Kurzem mit dem Thema Extension-Programmierung. Kenne mich aber, da ich dies Beruflich benötige mit PHP aus.
gruß
Thorsten
Hallo Thorsten.
Mir scheint der Ansatz etwas falsch. Warum willst Du Daten redundant speichern? Bei einer eigenen Extension kannst Du doch im Moment der Ausgabe die Felder zusammenfügen. Damit bist Du doch viel flexibler, brauchst weniger Platz in der Datenbank, macht die Bedienung übersichtlicher,...
Viele Grüße
Julian
Ich habe eine solche Lösung auch schonmal umgesetzt, um vom Kunden gewünschte realURLs realisieren zu können. (Name und Vorname als URL-Bestandteil, aber separate Speicherung zwecks Sortierung)
@thorty:
Du kannst Dich mit sogenannten Hooks in den TYPO3-internen Verarbeitungsprozess von Daten einhängen:
Stichwort "processDatamap_postProcessFieldArray"
https://docs.typo3.org/m/typo3/reference-coreapi/main/en-us/Index.html
@ThBodi:
hab mir das mit den Hooks mal angesehen, verstehe da aber nur Bahnhof.
Kannst du mir vielleicht etwas helfen?
Ich weis nicht wie und wo ich was hier einfügen muss damit das so funzt wie ich will.
Kannst du mir irgendwie ein Muster geben?
Gruß
thorty
Du kannst mit folgenden Zeilen eine eigene Klasse zur Manipulation von Daten an festgelegten Punkten der Datenverarbeitung von TYPO3 "einhängen" (ext_tables.php):
t3lib_div::requireOnce(t3lib_extMgm::extPath($_EXTKEY).'class.tx_extensionname_classname.php');
$TYPO3_CONF_VARS['SC_OPTIONS']['t3lib/class.t3lib_tcemain.php']['processDatamapClass'][] = 'tx_extensionname_classname';
Damit wird die angegebene Klasse eingebunden und die vorhandenen Funktionen bei Bedarf aufgerufen:
class tx_extensionname_classname {
function processDatamap_postProcessFieldArray($status, $table, $id, &$fieldArray, &$obj){
...
}
}