Ergebnis 1 bis 12 von 12

Thema: DCA: Select-Optionen aus Tabelle (via foreignKey) mit Label?

  1. #1
    Contao-Nutzer
    Registriert seit
    31.03.2014.
    Beiträge
    16

    Frage DCA: Select-Optionen aus Tabelle (via foreignKey) mit Label?

    Hallo an alle!

    Ich bin ganz neu bei Contao und finde grade eine für mich entscheidende Information nicht.

    Ich habe im DCA u.a. ein select, dass als Optionen die Werte einer anderen Tabelle nehmen soll. Das funktioniert auch soweit, nur leider werden als Label nur die IDs angezeigt, nicht der title.
    Ich wüsste gerne, wo ich deklariere, welches Feld als Label herhalten soll.

    Mein Feld sieht derzeit so aus:
    PHP-Code:
    $GLOBALS['TL_DCA']['tl_content']['fields']['x_map'] = array(
            
    'exclude' => true,
            
    'sql' => 'int(10) unsigned NULL',
            
    'foreignKey' => 'tl_maps.id',
            
    'inputType' => 'select',
            
    'eval' => array(
                    
    'includeBlankOption' => true,
            ),
            
    'label' => &$GLOBALS['TL_LANG']['tl_content']['x_map']
    ); 
    Ich wäre dankbar, wenn mich hier jemand auf die richtige Fährte bringen könnte.

    Viele Grüße
    WBen

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

    Support Contao

    Standard

    Moin und willkommen im Forum.

    Bei der Verwendung von 'foreignKey' musst du angeben, welche Tabelle und daraus welche Spalte für die Anzeige genutzt werden. Es wird schon vorausgesetzt, dass die Werte Referenz auf die Spalte 'id' der verknüpften Tabelle geht.

    Also z.B. so (vorausgesetzt, die Spalte "title" existiert in 'tl_maps'
    PHP-Code:
    ...
    'foreignKey' => 'tl_maps.title'
    ... 
    Man kann da auch MySQL Funktionen wie CONCAT nutzen, z.B.

    PHP-Code:
    ...
    'foreignKey' => 'tl_member.CONCAT(firstname," ",lastname)'
    ... 
    Gruß, Cliff

  3. #3
    Contao-Nutzer
    Registriert seit
    31.03.2014.
    Beiträge
    16

    Standard

    Vielen Dank für Deine Antwort, Cliff.
    Da wär ich nicht drauf gekommen, denn bei "key" denke ich natürlich erstmal nur an IDs…

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

    Support Contao

    Standard

    Super.

    Bzgl. des Names geb ich dir recht. Die Komplexität der Möglichkeiten macht der nicht klar.

  5. #5
    Contao-Nutzer
    Registriert seit
    31.03.2014.
    Beiträge
    16

    Standard

    Die Komplexität der Möglichkeiten macht der nicht klar.
    Welche Möglichkeiten bietet es denn sonst noch? Gibt es da irgendwo (außer dem Handbuch) eine Dokumentation?

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

    Support Contao

    Standard

    Also hier gab es den Tip, wo das Feld ausgewertet wird:

    https://community.contao.org/en/show...ll=1#post97009

    So viel mehr das als oben angegeben geht nun auch nicht mehr, denn alles nach dem Punkt muss irgendwie SQL konform in ein SELECT passen.

    Die WHERE Klausel kann man damit nicht beeinflussen.

    Datumsformatierung ist nicht möglich, weil '%' im Formatstring als Wildcard entfernt wird.

    Also setze ich "Komplexität der Möglichkeiten" mal in Anführungszeichen.

    Wobei das schon echt gut ist.

    Alles was damit nicht geht, kann man dann mit dem 'options_callback' machen.

    Sortieren, Gruppieren, etc. ... was das Herz begehrt.

    Gruß, Cliff

  7. #7
    Contao-Nutzer
    Registriert seit
    31.03.2014.
    Beiträge
    16

    Standard

    zum options_callback hab ich auch gleich noch eine Frage: Wie gebe ich dort labels zurück? label_callback ists es offensichtlich ja nicht.
    Ich hatte es mit der Rückgabe als assoziatives Array versucht, aber da gibt es dann Gruppen. Desgleichen mit einem zweidimensionalen Array.

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

    Support Contao

    Standard

    Guck dir am besten mal 'system/modules/core/dca/tl_content.php' an:

    - in getForms(...) wird nur eine Liste von ID und Label vorbereitet: https://github.com/contao/core/blob/...tent.php#L1288
    - in getModules(...) wird dazu noch gruppiert: https://github.com/contao/core/blob/...tent.php#L1325

    Gruß, Cliff

  9. #9
    Contao-Nutzer
    Registriert seit
    31.03.2014.
    Beiträge
    16

    Standard

    Also müssen die values numerisch sein, damit Contao dass Array value => label -Paare behandelt.

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

    Support Contao

    Standard

    Nööö,

    folgendes geht unproblematisch:

    1.)

    PHP-Code:
    $options[] = 'AAA';
    $options[] = 'BBB'
    Values und Label sind der Wert.

    2.)

    PHP-Code:
    $options[6] = 'AAA';
    $options[9] = 'BBB'
    Values sind jeweils der Index im Array, Label ist der Wert.

    3.)

    PHP-Code:
    $options[0] = 'AAA';
    $options[1] = 'BBB'
    Values und Label sind der Wert !!! entspricht 1.)

    4.)

    PHP-Code:
    $options['a'] = 'AAA';
    $options['b'] = 'BBB'
    Values sind jeweils der Key im Array, Label ist der Wert.

    5.)

    PHP-Code:
    $options['A']['a1'] = 'A-1';
    $options['A']['a2'] = 'A-2';
    $options['B']['b1'] = 'B-1';
    $options['B']['b2'] = 'B-2'
    Mit Gruppierung.

    Gruß, Cliff

  11. #11
    Contao-Nutzer
    Registriert seit
    31.03.2014.
    Beiträge
    16

    Standard

    Danke.
    Ich habs nochmal nach Methode 4 gemacht. Ich weiß nicht, was ich vorher falsch hatte, aber jetzt geht's.

  12. #12
    Contao-Nutzer Avatar von Mave2104
    Registriert seit
    04.05.2014.
    Ort
    Mannheim
    Beiträge
    28

    Standard

    Darf ich in diesem Zusammenhang euer Augenmerk mal auf diesen Thread richten ?

    https://community.contao.org/de/show...Feld-erweitern

    vielleicht könnten ihr mir dabei behilflich sein ?

    Danke

    Gruss Marc

Aktive Benutzer

Aktive Benutzer

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

Berechtigungen

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