Ergebnis 1 bis 7 von 7

Thema: DCA-Felder dynamisch verwenden

  1. #1
    Contao-Urgestein Avatar von Samson1964
    Registriert seit
    05.11.2012.
    Ort
    Berlin
    Beiträge
    2.794

    Standard 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?
    Viele Grüße
    Frank

    Seit Mai 2013 Fan von Contao
    Webmaster vom Deutschen Schachbund und Berliner Schachverband
    Mein Blog: Schachbulle
    Meine Erweiterungen bei GitHub
    Meine Videos auf YouTube: Playlist zur Contao-Programmierung/Einrichtung

  2. #2
    Contao-Nutzer
    Registriert seit
    28.07.2009.
    Ort
    Eisenach
    Beiträge
    137

    Standard

    Hi,
    Ich denke nicht, da du es ja in dem neun Feld das alte überschreiben wurdest.
    Ich löse das, so
    PHP-Code:

    return $this->getTemplateGroup('myprefix_'); 
    Und beim 2 Teil des Template kommt der Hinweiß, wozu das Template da ist.
    z.B.: myprefix_fhcounterdetails.html5
    für das andere modul dann
    myprefix_modul/zweckename.html5

  3. #3
    Contao-Urgestein Avatar von Samson1964
    Registriert seit
    05.11.2012.
    Ort
    Berlin
    Beiträge
    2.794

    Standard

    Du hast also Deine Standardprefix, egal welche Bedeutung die Templates haben. In der Erwartung der Anwender kann anhand der Suffix erkennen, wozu das Template gut sein könnte.

    Ich nehme an, daß man auch so einfach keine dynamische Auswahl machen kann. Contao wird ja beim Abklappern der Module, z.B. zwecks Datenbankaktualisierung, nicht beide Auswahlmöglichkeiten nehmen können, da ja jeweils nur eine gültig sein kann: entweder true oder false oder irgendein anderer Wert. Und selbst wenn das möglich wäre, würde das eine DCA-Feld das andere überschreiben.

    Fazit: Ich werde das zweite Modul eh noch weiter ausbauen wollen und danach gibt es nicht mehr soviel Gemeinsamkeiten. Und statt einer doppelten Verwendung des Feldes fhc_template lege ich halt noch ein zweites Feld an.
    Viele Grüße
    Frank

    Seit Mai 2013 Fan von Contao
    Webmaster vom Deutschen Schachbund und Berliner Schachverband
    Mein Blog: Schachbulle
    Meine Erweiterungen bei GitHub
    Meine Videos auf YouTube: Playlist zur Contao-Programmierung/Einrichtung

  4. #4
    Contao-Urgestein Avatar von cliffparnitzky
    Registriert seit
    08.10.2010.
    Ort
    Lüneburg
    Beiträge
    2.452
    User beschenken
    Wunschliste
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Moin Frank,

    dem options_callback wird das DataContainer-Array übergeben ... da kannst du das Feld 'type' abfragen und deiner Entscheidung für den Präfix treffen, also ungefähr so:


    PHP-Code:
    ...
        public function 
    getCounterTemplates(DataContainer $dc)
        {
            if (
    $dc->activeRecord->type == 'TYP_A')
            {
                return 
    $this->getTemplateGroup('fhcounterdetails_');
            }
            else
            {
                ...
            }
        }
    ... 
    Gruß, Cliff

  5. #5
    Contao-Urgestein Avatar von Samson1964
    Registriert seit
    05.11.2012.
    Ort
    Berlin
    Beiträge
    2.794

    Standard

    Super, das muß ich nachher gleich mal ausprobieren!
    Viele Grüße
    Frank

    Seit Mai 2013 Fan von Contao
    Webmaster vom Deutschen Schachbund und Berliner Schachverband
    Mein Blog: Schachbulle
    Meine Erweiterungen bei GitHub
    Meine Videos auf YouTube: Playlist zur Contao-Programmierung/Einrichtung

  6. #6
    Contao-Urgestein Avatar von Samson1964
    Registriert seit
    05.11.2012.
    Ort
    Berlin
    Beiträge
    2.794

    Standard

    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:

    fhcounter.jpg

    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_');
            } 
        } 
    Viele Grüße
    Frank

    Seit Mai 2013 Fan von Contao
    Webmaster vom Deutschen Schachbund und Berliner Schachverband
    Mein Blog: Schachbulle
    Meine Erweiterungen bei GitHub
    Meine Videos auf YouTube: Playlist zur Contao-Programmierung/Einrichtung

  7. #7
    Contao-Urgestein Avatar von cliffparnitzky
    Registriert seit
    08.10.2010.
    Ort
    Lüneburg
    Beiträge
    2.452
    User beschenken
    Wunschliste
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Hmm, ggf. brauchst noch nen load_callback am Feld, der dann den Wert zurücksetzt, wenn er nicht passt.

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

Lesezeichen

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •