DCA-Felder dynamisch verwenden
Ich habe zwei Module deren DCA ja in tl_module.php definiert wird. Beide Module sind sich recht ähnlich und unterscheiden sich nur in Nuancen. Zum Beispiel bei der Templateauswahl:
PHP-Code:
$GLOBALS['TL_DCA']['tl_module']['fields']['fhc_template'] = array
(
'label' => &$GLOBALS['TL_LANG']['tl_module']['fhc_template'],
'default' => 'fhcounterdetails_full',
'exclude' => true,
'inputType' => 'select',
'options_callback' => array('tl_module_fhcounter', 'getCounterTemplates'),
'eval' => array('tl_class'=>'w50'),
'sql' => "varchar(32) NOT NULL default ''"
);
class tl_module_fhcounter extends Backend
{
public function getCounterTemplates()
{
return $this->getTemplateGroup('fhcounterdetails_');
}
}
Soweit der Codeauszug für das eine Modul. Beim anderen Modul (also derselben Datei tl_module.php) würde ich dasselbe Feld verwenden wollen. Es unterscheidet sich nur bei der Template-Prefix, die ausgewählt werden kann. Gibt es da eine Lösung ohne ein zweites Feld in der DB anlegen zu müssen?
Liste der Anhänge anzeigen (Anzahl: 1)
Funktioniert soweit. Bis auf ein Problem.
Wähle ich erst das eine Modul aus und danach gleich das andere, wird das Eingabeformular nicht komplett reinitialisiert. Im Speicher bleibt das zuvor ausgewählte Template des ersten Moduls und es erscheint eine Fehlermeldung, weil dieses Template nicht auswählbar ist:
Anhang 14134
PHP-Code:
public function getCounterTemplates(DataContainer $dc)
{
// Standard-Template feststellen, um die je nach Modul
// die richtigen Templates auswählen zu können
if($dc->activeRecord->type == 'fhcounter_details')
{
$GLOBALS['TL_DCA']['tl_module']['fields']['fhc_template']['default'] = 'fhcounterdetails_full';
return $this->getTemplateGroup('fhcounterdetails_');
}
else
{
// Modultyp fhcounter_view
$GLOBALS['TL_DCA']['tl_module']['fields']['fhc_template']['default'] = 'fhcounter_mini';
return $this->getTemplateGroup('fhcounter_');
}
}