Ergebnis 1 bis 7 von 7

Thema: DCA: showColumns und Relationen

  1. #1
    Contao-Nutzer Avatar von dako314
    Registriert seit
    04.05.2013.
    Ort
    Mannheim
    Beiträge
    120

    Beitrag DCA: showColumns und Relationen

    Hallo zusammen,

    ich versuche gerade eine Backend-Tabelle aufzubauen und habe ungefähr folgende Ansicht (siehe Screenshot im Anhang).

    Wie man sieht, verwende ich das Flag showColumns, um mehrere Spalten für die Tabelle anzuzeigen.

    showColumns (true, false): If true Contao will generate a table header with column names (https://docs.contao.org/dev/reference/dca/list/)
    Ich habe also die folgenden Spalten, die ich anzeigen möchte: Vorname, Nachname, Berechtigung, Domäne.

    Die Domäne zeigt allerdings auf eine weitere Tabelle, also nutze ich für die Bearbeitung so etwas wie den folgenden Code, damit bei der Bearbeitung das Select-Feld schön (mit dem domain.name, statt mit der domain.id) angezeigt wird:

    PHP-Code:
    'foreignKey'  => 'tl_law_monitoring_domains.name',
    'relation'  => ['type' => 'hasOne''load' => 'eagerly'
    Das sieht auch in der Bearbeitungssicht alles schön aus, aber in der Auflistung der Tabelle steht eben nur die in der DB gespeicherte ID der Domäne.

    Gibt es eine Möglichkeit, auch in der Auflistung der Tabelle statt der DB-ID des Objekts (domain.id) "2" ein anderes Attribut des Objekts (in meinem Fall domain.name) auszugeben?

    Viele Grüße
    Daniel Koch
    Angehängte Grafiken Angehängte Grafiken

  2. #2
    Contao-Nutzer Avatar von dako314
    Registriert seit
    04.05.2013.
    Ort
    Mannheim
    Beiträge
    120

    Standard

    Oh - sorry, aber ich habe gerade eben selbst durch weitere Recherche herausgefunden, dass es eine Möglichkeit gibt, siehe: https://de.contaowiki.org/DCA_Field_Mapping

    Jetzt aber eine weitere Frage, geht das auch, wenn ich einen Options_Callback verwende statt einer Relation? Kann ich dann auch die Daten über den options_callback laufen lassen?

    Und gleich eine zweite Frage: Geht sowas wie "domain:tl_law_monitoring_domains.name" in den label fields auch mit CONCAT? z.B wenn ich die Kombination aus mehreren Feldern anzeigen lassen möchte.

    Danke!
    Geändert von dako314 (25.07.2020 um 08:20 Uhr)

  3. #3
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    34.109
    Partner-ID
    10107

    Standard

    Bei foreignKey kannst du CONCAT() verwenden. Dieses mapping feature war mir bisher nicht bekannt.

  4. #4
    Contao-Nutzer Avatar von dako314
    Registriert seit
    04.05.2013.
    Ort
    Mannheim
    Beiträge
    120

    Standard

    Hab das mal bei foreignKey ausprobiert. Funktioniert auch, danke!

    Allerdings bezieht sich das nur auf die Edit/Create-View. Die Tabelle, die die Daten anzeigt, wird scheinbar nur von list.label.fields beeinflusst und da funktioniert kein concat.

    Grüße
    Daniel

  5. #5
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    34.109
    Partner-ID
    10107

    Standard

    Ja, imho ist das ein Bug/Oversight, dass die foreignKey Info da nicht mit einbezogen wird. Du könntest dazu ja mal ein Issue auf GitHub machen.

  6. #6
    Contao-Nutzer Avatar von dako314
    Registriert seit
    04.05.2013.
    Ort
    Mannheim
    Beiträge
    120

    Standard

    Danke, ich habe mal einen Issue erstellt (https://github.com/contao/contao/issues/1989). Ist übrigens mein erster Issue im Contao-GitHub, ich hoffe ich habe das richtig gemacht.

  7. #7
    Contao-Nutzer Avatar von dako314
    Registriert seit
    04.05.2013.
    Ort
    Mannheim
    Beiträge
    120

    Standard

    Der Issue ist mittlerweile geschlossen. Falls jemand mal nach der Lösung sucht:

    Über das list.label.label_callback lässt sich der Tabelleninhalt manipulieren.

    PHP-Code:
    'label_callback' => array('tl_your_class''yourFunction'
    Die Klasse hat dann den folgenden Rumpf:

    PHP-Code:
    public function rowManipulator($row$labelDataContainer $dc$args) {} 
    In der $row stehen die Rohdaten, in den $args stehen die Daten, die zurückgegeben werden sollen. Am Ende müssen die Argumente mit return $args; zurückgegeben werden.

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
  •