Software & Infrastruktur

TYPO3 4.1 Feature „Inline Relational Record Editing“ kurz vorgestellt: Einfach irre!

Seite 2 / 4

Datenspeicherung

IRRE unterstützt verschiedene Arten, um Relationen zwischen Elternobjekten und den zugehörigen Kindobjekten zu speichern. Listen stellen dabei die einfachste Variante dar. Die UIDs der Kindobjekte werden in einem Feld des Elternobjekts gespeichert und sind per Komma getrennt. Die Reihenfolge der einzelnen Werte entspricht der Sortierreihenfolge. Fremdschlüssel ermöglichen normalisierte Datenstrukturen. In der
Tabelle der Kindobjekte wird ein Feld reserviert, das die UID des
Elternobjekts speichert.

Im TYPO3 Content Array (TCA) des Elternelements ist konfiguriert, welches Feld des Kinds dazu herangezogen wird („foreign_field“). Eine weitere Konfigurationsoption erlaubt es, zusätzlich den Tabellennamen des Elternobjekts zu hinterlegen („foreign_table_field“) – man nennt dies auch „weak entity“.

Relationstabellen, bei TYPO3 bereits als MM-Relationen bekannt, erlauben die Verknüpfung von zwei Objekten. Die UID-Werte der beiden zusammengehörigen Datensätze werden hier in einer zusätzlichen Tabelle abgespeichert, der Relationstabelle. Inline Relational Record Editing verwendet allerdings nicht die herkömmlichen MM-Tabellen, sondern eine eigene Tabelle, die ebenfalls per TCA definiert werden kann. Daraus resultiert, dass hier nun Attribute für jede Relation hinterlegt werden können.

PHPtca.php
$TCA['tx_irrehotel_hotel'] = Array(
	'ctrl' => ...,
	'interface' => ...,
	'columns' => Array(
		'title' => Array(
			'label' => ...,
			'config' => Array(
				'type' => 'input',
			),
		),
		'programs' => Array(
			'label' => ...,
			'config' => Array(
				'type' => 'inline',
				'foreign_table' => 'tx_irrehotel_program',
				'foreign_field' => 'parentid',
				'foreign_table_field' => 'parenttable',
				'maxitems' => 10,
			),
		), 
	),
	'types' => ...,
	'palettes' => ...,
);
$TCA['tx_irrehotel_program'] = Array(
	'ctrl' => ...,
	'interface' => ...,
	'columns' => Array(
		'title' => Array(
			'label' => ...,
			'config' => Array(
				'type' => 'input',
			),
		),
		'parentid' => Array(
			'config' => Array(
				'type' => 'passthrough',
			),
		),
		'parenttable' => Array(
			'config' => Array(
				'type' => 'passthrough',
			),
		),
	),
	'types' => ...,
	'palettes' => ...,
);

Listing 1

Ab TYPO3 4.1 lässt sich die Funktionalität von IRRE über den TCA-Typ „inline“ nutzen. Das angeführte Beispiel soll eine Relation zwischen einem Hotel als Elternelement und mehreren Programmen als Kindelemente zeigen. Das komplette Beispiel ist im TYPO3 Extension Repository (TER) unter dem Namen „irre_hotel“ hinterlegt [1].

Bitte beachte unsere Community-Richtlinien

Wir freuen uns über kontroverse Diskussionen, die gerne auch mal hitzig geführt werden dürfen. Beleidigende, grob anstößige, rassistische und strafrechtlich relevante Äußerungen und Beiträge tolerieren wir nicht. Bitte achte darauf, dass du keine Texte veröffentlichst, für die du keine ausdrückliche Erlaubnis des Urhebers hast. Ebenfalls nicht erlaubt ist der Missbrauch der Webangebote unter t3n.de als Werbeplattform. Die Nennung von Produktnamen, Herstellern, Dienstleistern und Websites ist nur dann zulässig, wenn damit nicht vorrangig der Zweck der Werbung verfolgt wird. Wir behalten uns vor, Beiträge, die diese Regeln verletzen, zu löschen und Accounts zeitweilig oder auf Dauer zu sperren.

Trotz all dieser notwendigen Regeln: Diskutiere kontrovers, sage anderen deine Meinung, trage mit weiterführenden Informationen zum Wissensaustausch bei, aber bleibe dabei fair und respektiere die Meinung anderer. Wir wünschen Dir viel Spaß mit den Webangeboten von t3n und freuen uns auf spannende Beiträge.

Dein t3n-Team

Schreib den ersten Kommentar!