Zum Inhalt springen

Label für mm-Relation in backend listview fehlt

Erstellt am 27. Mai 2016 · 6 Antworten · letzte Antwort am 19. Juli 2016

Tags: TCA, TYPO3 6, Frage

Unbekannter Benutzer ·

Hallo Leute,

ich habe eine eigene Extension geschrieben, in der zwei Entitäten (ABC und XYZ) über eine mm-Relation miteinander verbunden sind. Die Relationen sind im Backend über das Element group pflegbar und werden in einer dritten Tabelle gespeichert.

tx_extname_domain_model_ABC
tx_extname_domain_model_XYZ
tx_extname_ABC_XYZ_mm

Mein XYZ-TCA sieht an der Stelle wie folgt aus: (Im ABC-TCA genau anders herum)

'ABC' => array(
	'exclude' => 1,
	'label' => 'Abc',
	'config' => array(
		'type' => 'group',
		'internal_type' => 'db',
		'foreign_table' => 'tx_extname_domain_model_abc',
		'MM' => 'tx_extname_xyz_abc_mm',
		'MM_opposite_field' => 'abc',
		'size' => 10,
		'selectedListStyle' => 'width:610px',
		'itemListStyle' => 'width:610px',
		'maxitems' => 9999,
		'minitems' => '0',
	),
),

Das zuweisen im Backend klappt alles. Ich kann in der Liste im Frontend auch darauf zugreifen.
Ich habe nur das Problem, dass ich im Backend in der List View die Labels der jeweils anderen Entität anzeigen will, aktuell wird dort aber nur "N/A" angezeigt.
Dh. bei XYZ sollen die Relationen statt als "N/A" mit ihren Labels angezeigt werden als "Abc1, Abc2, Abc3, ..." und bei ABC dann "Xyz1, Xyz2, Xyz3, ..."

Ich habe das bei einer anderen Extension schon genau so gesehen, aber ich kann nicht erkennen was ich vergessen hab, dass es bei mir nicht geht.

Über Tipps würde ich mich echt freuen! 🙂

Viele Grüße

Unbekannter Benutzer ·

Hallo Julian,

ja die werden angezeigt. Wobei in beiden Fällen die Labels aus verschiedenen Attributen zusammengesetzt sind. Also z.B. "Faschingsferien, 14-02-16 (-104 Tage), ..."
Hat das eventuell damit etwas zu tun?

Hier noch der Ausschnitt aus der ext_tables.php

$GLOBALS['TCA']['tx_extname_domain_model_abc'] = array(
	'ctrl' => array(
		'title'	=> 'LLL:EXT:extname/Resources/Private/Language/locallang_db.xlf:tx_extname_domain_model_abc',
		'label' => 'titel',
		'label_alt' => 'titel, startdatum, endedatum',
		'label_alt_force' => '1',
//...
	),
);

Viele Grüße

Julian.​Hofmann ·

Ähm, müsste

'MM_opposite_field' => 'abc',

nicht

'MM_opposite_field' => 'xyz',

sein? Also der Name der Spalte auf der anderen Seite. Ein Feld "abc" dürfte es mim Datensatz/Objekt ABC selbst nicht geben.

Unbekannter Benutzer ·

Ich bin mir da jetzt nicht ganz sicher. Hab es eben auch anders herum getestet, aber egal wie rum ich es mach, es scheint keinen Unterschied zu machen.

Ursprünglich war die Relation so definiert:

'abc' => array(
'exclude' => 1,
'label' => 'Abc',
'config' => array(
'type' => 'group',
'internal_type' => 'db',
'allowed' => 'tx_extname_domain_model_abc',
'MM' => 'tx_extname_xyz_abc_mm',
...
),
),

Das speichert die Relation auf jeden Fall richtig ab und zeigt sie richtig beim Bearbeiten an, aber in der list view wird auch da nur "N/A" angezeigt.

Unbekannter Benutzer ·

Hi,

also falls jemandem hierzu noch etwas einfällt, wär ich echt dankbar.
Ich habe bisher die Ursache für die Nicht-Anzeige nicht gefunden.. 🙁

Viele Grüße

Unbekannter Benutzer · · Beste Antwort

Also zwischenzeitlich bin ich selber über die Lösung gestolpert.
Ich hatte die TCAs doch nicht richtig definiert. Falls jemand dasselbe Problem hat, hier die richtige Definition...

Im XYZ TCA:

'abc' => array(
			 'exclude' => 1,
			 'label' => 'ABC',
			'config' => array(
				'type' => 'group',
				'internal_type' => 'db',
				'allowed' => 'tx_extname_domain_model_abc',
				'foreign_table' => 'tx_extname_domain_model_abc',
				'MM' => 'tx_extname_abc_xyz_mm',
				'foreign_field' => 'abc',
				'size' => 10,
				'maxitems' => 9999,
				'minitems' => '0',
			),
		),

Im ABC TCA:

'xyz' => array(
			 'exclude' => 1,
			 'label' => 'XYZ',
			'config' => array(
				'type' => 'group',
				'internal_type' => 'db',
				'allowed' => 'tx_extname_domain_model_xyz',
				'foreign_table' => 'tx_extname_domain_model_xyz',
				'MM' => 'tx_extname_abc_xyz_mm',
				'foreign_field' => 'xyz',
				'size' => 10,
				'maxitems' => 9999,
				'minitems' => '0',
			),
		),