Zum Inhalt springen

Field type: Not editable, only displayed mit Daten anderer Felder füllen

Erstellt am 16. März 2009 · 4 Antworten · letzte Antwort am 17. März 2009

Tags: TCA, Frage

thorty ·

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

Julian.​Hofmann ·

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

thorty ·

@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

ThBodi ·

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){
	...
	}
}