TCA: Sichtbarkeit von Feldern abhängig von Dropdown Wert

Problem: je nachdem was man im Backend im Dropdown ‚Typ‘ (‚type‘ in der Datenbank) auswählt, soll ein anderes Feld sichtbar sein. Bei Typ A und Typ B soll mein Feld „Wert“ sichtbar sein, bei Typ C das Feld “ Details“. Das ganze ließ sich sogar relativ einfach lösen. Zunächst fügt man in der ext_tables.php in das $TCA der Extension folgendes hinzu:

$TCA['tx_extensionname_domain_model_modelname'] = array(
	'ctrl' => array(
                ... 
		'requestUpdate' => 'type'
                ...
	),
);

Damit wird ein Seitenreload erzwungen, sobald das Dropdown „type“ geändert wird. Nun füge ich im TCA in der Datei Configuration/TCA/Modelname.php meine drei Felder ein:

'type' => array(
    'exclude' => 0,
    'label' => 'LLL:EXT:extensionname/Resources/Private/Language/locallang_db.xml:tx_extensionname_domain_model_modelname.type',
    'config' => array(
        'type' => 'select',
        'items' => array(
            array('Typ A', 'typeA'),
            array('Typ B', 'typeB'),
            array('Typ C', 'typeC')
        )
    ),
),
'val' => array(
    'exclude' => 0,
    'label' => 'LLL:EXT:extensionname/Resources/Private/Language/locallang_db.xml:tx_extensionname_domain_model_modelname.val',
    'config' => array(
        'type' => 'input',
        'size' => 255,
        'eval' => 'trim,required'
    ),
    'displayCond' => array(
        'OR' => array(
            'FIELD:type:=:typeA',
            'FIELD:type:=:typeB',
        )
    )
),
'details' => array(
    'exclude' => 0,
    'label' => 'LLL:EXT:extensionname/Resources/Private/Language/locallang_db.xml:tx_extensionname_domain_model_modelname.details',
    'config' => array(
        'type' => 'input',
        'size' => 30,
        'eval' => 'trim,required'
    ),
    'displayCond' => 'FIELD:type:=:typeC'
),

displayCond gibt an, unter welchen Umständen die Felder sichtbar sein sollen.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.