Zum Inhalt springen

objekt in TCA zweimal verwenden

Erstellt am 26. Juni 2011 · 1 Antwort · letzte Antwort am 26. Juni 2011

Tags: TCA, Frage

zabinetta ·

Liebe listenfreunde,
ich habe ein blödes Problem mit einer eigenen extension:
im Backend brauche ich ein ein Feld vom Typ user, das zu den generierten Daten auch noch labels anzeigen soll.
die labels hole ich über die $PA in die Funktion
ich habe die Felder in der tca.php definiert:

//im feld statusreview duerfen bestimmte user etwas veraendern, es kommt direkt aus dem kickstarter
'statusreview' => array (
'exclude' => 1,
'label' => 'LLL:EXT:myext/locallang_db.xml:tx_myext_question.statusreview',
'config' => array (
'type' => 'select',
'items' => array (
array('LLL:EXT:myext/locallang_db.xml:tx_myext_question.statusreview.I.0', '1'),
array('LLL:EXT:myext/locallang_db.xml:tx_myext_question.statusreview.I.1', '2'),
array('LLL:EXT:myext/locallang_db.xml:tx_myext_question.statusreview.I.2', '3'),
array('LLL:EXT:myext/locallang_db.xml:tx_myext_question.statusreview.I.3', '4'),
array('LLL:EXT:myext/locallang_db.xml:tx_myext_question.statusreview.I.4', '5'),
),
'size' => 1,
'maxitems' => 1,
)
),

//im Feld readreviews dagegen wird eine Funktion aufgerufen, die den statusreview und noch ein paar andere Sachen anzeigt ohne daß man die Werte vereandern kann
'readreviews' => array (
'exclude' => 0,
'label' => 'LLL:EXT:myext/locallang_db.xml:tx_myext_question.statusreview',
'config' => array (
'type' => 'user',
'userFunc' => 'EXT:myext/class.tx_myext_tca.php:tx_myext_tca->readreviews',

//hier ist das Problem:
//warum kann ich die 'items' nicht von oben holen?
//'items' => $TCA['tx_myext_question']['columns' ]['statusreview']['config']['items'],
'items' => array (
array('LLL:EXT:myext/locallang_db.xml:tx_myext_question.statusreview.I.0', '1'),
array('LLL:EXT:myext/locallang_db.xml:tx_myext_question.statusreview.I.1', '2'),
array('LLL:EXT:myext/locallang_db.xml:tx_myext_question.statusreview.I.2', '3'),
array('LLL:EXT:myext/locallang_db.xml:tx_myext_question.statusreview.I.3', '4'),
array('LLL:EXT:myext/locallang_db.xml:tx_myext_question.statusreview.I.4', '5'),
),
)
),

Im Prinzip klappt das auch schon, hat Schönheitsfehler: warum kann ich nicht mit

$TCA['tx_myext_question']['columns' ]['statusreview']['config']['items'],

auf die Zeilen weiter oben in der tca.php zugreifen, so wie das beim

'ctrl' => $TCA['tx_myext_pruefungen']['ctrl'],

geht?
und wenn ich versuche das array $TCA['tx_myext_question']['columns' ]['statusreview']['config']['items'] in der ext_tables.php zu definieren werden mir gar keine felder mehr angezeigt...
bin ziemlich ratlos. hoffe daß es irgendwie geht und mir nur ein kleiner schlüssel fehlt.

mag mir jemand eine Tip geben?

zabinetta ·

oh mann, manchmal bringts die liste selbst wenns fürs Weiterüberlegen ist.
hab die Lösung jetzt selbst gefunden: wenn ich das alles eins weiter unten in der tca.php mache ists gar kein problem:

$TCA['tx_myext_question'] = array (
	'ctrl' => $TCA['tx_myext_pruefungen']['ctrl'],
/*
....
*/
'palettes' => array (
		'1' => array('showitem' => 'fe_group')
	)
);
//dann einfach eine zeile drunter
$TCA['tx_myext_question']['columns' ]['readreviews']['config']['items'] = $TCA['tx_myext_question']['columns' ]['statusreview']['config']['items'];

so einfach kanns sein 😉