TYPO3 Entwicklung

Konzeption, Integration und Implementierung von anspruchsvollen TYPO3 basierten Projekten

TYPO3 Extension Entwicklung

Entwicklung individueller TYPO3 Extensions nach aktuellen Standards und Konventionen

TYPO3 SEO & Usability Optimierung

Implementierung nachhaltiger Maßnahmen zur SEO und Usability Optimierung für Ihre TYPO3 Anwendung

TYPO3 MM-Relation beidseitig in Extension

Über den Kickstarter können ja MM-Relationen für eine TYPO3 Extension relativ einfach zusammen geklickt werden. Nicht möglich ist jedoch, eine MM-Relation via Kickstarter so zu erzeugen, dass sie von beiden Seiten über das TCA korrekt abgebildet wird und die Eingabemöglichkeiten im Backend zur Verfügung stehen

Beispiel für beidseitigen MM-Relationen

Es existieren die Datensätze "Firma" und "Betreuer". Ein Betreuer kann beliebigen Firmen zugeordnet sein. Wird der Datensatz "Firma" editiert, sieht man die dieser Firma zugeordneten "Betreuer". Das lässt sich durch den Kickstarter "zusammen klicken". Ebenso möchte man aber, wenn man den Datensatz "Betreuer" editiert, dass man alle Firmen sieht, denen dieser Betreuer zugeordnet ist. Das kann der Kickstarter nicht automatisch konfigurieren, es ist aber dennoch möglich, derartiges in TYPO3 abzubilden.

So funktionieren beidseitige MM-Relationen in TYPO3

Die Tabellen "Firma" und "Betreuer" werden ganz normal über den Kickstarter erzeugt. In beiden Tabellen wird jeweils ein Feld für die entgegengesetzte Tabelle als Datenbank-Relation erzeugt (MM-Relation). Daraufhin erzeugt der Kickstarter für beide Tabellen eine mm-Tabelle. Die mm-Tabelle für die zweite Tabelle ("Betreuer") kann gelöscht werden, da beider Tabellen die gleich mm-Tabelle benutzen müssen.

 

Im TCA der zweiten Tabelle ("Betreuer") wird nun im "config"-Abschnitt des Feldes mit der Relation der "MM"-Part ersetzt, dass er auf die gleiche Tabelle wie im entsprechenden Abschnitt des Feldes mit der Relation in der "Firma" Tabelle zeigt. Zusätzlich wird die Zeile "MM_opposite_field" => "firma" eingetragen, damit die Felder "uid_local" und "uid_foreign" in diesem Falle vertauscht werden. Achtung: dieser Eintrag darf nur bei der zweiten Tabelle hinzugefügt werden!

 

Nun muss noch noch die "ext_tables.sql" editiert werden und hier für die mm-Tabelle die Spalte "sorting_foreign int(11) NOT NULL DEFAULT '0'" hinzugefügt werden.

 

Voila, Cache leeren und das war's: Jetzt sollten in den Datensätzen beider Tabellen jeweils die zugeordneten Datensätze der entgegengesetzten Tabelle sichtbar sein.