Multi-Tabelle (MCW)

Das Attribut „Multi-Tabelle (MCW)“ ist eine erweiterte Variante des Text-Tabellen-Attributs. Statt reiner Texteingaben kann in jeder Tabellenzelle ein eigener Widget-Typ konfiguriert werden — z. B. Select, Radiobuttons, Checkboxen, Datumspicker oder Textfelder. Die Daten werden in einer eigenen Wertetabelle gespeichert, sodass für das Attribut keine eigene Spalte in der MetaModel-Tabelle angelegt wird.

Typische Einsatzbereiche:

  • Technische Spezifikationen mit gemischten Eingabetypen (Text + Auswahl + Datum)

  • Öffnungszeiten mit Wochentag-Auswahl und Zeitfeldern

  • Konfigurierbare Merkmallisten mit validierter Eingabe

Warnung

Die Spaltenstruktur (Anzahl und Typ der Spalten) wird nicht im MetaModels-Backend konfiguriert, sondern in einer PHP-Konfigurationsdatei (contao/config/config.php). Dies erfordert Entwicklerkenntnisse.

Siehe auch

Für mehrsprachige MetaModels steht das Attribut Übersetzte Multi-Tabelle (MCW) zur Verfügung.

Siehe auch

Dieses Attribut wird von der File-Usage Integration unterstützt. Damit lässt sich in der Contao-Dateiverwaltung anzeigen, ob und wo eine Datei eingebunden ist.

Installation

Das Attribut wird über den Contao Manager oder Composer installiert:

composer require metamodels/attribute_tablemulti

Einstellungen beim Anlegen des Attributs

Das Attribut besitzt keine eigenen Einstellungen im MetaModels-Backend beim Anlegen. Es werden nur die allgemeinen Attribut-Einstellungen verwendet:

  • Name, Spaltenname, Beschreibung

  • Varianten überschreiben

Die eigentliche Konfiguration der Tabellenstruktur erfolgt in der PHP- Konfigurationsdatei über $GLOBALS['TL_CONFIG']['metamodelsattribute_multi']:

$GLOBALS['TL_CONFIG']['metamodelsattribute_multi']['mm_beispiel']['mein_feld'] = [
    'minCount'     => 0,
    'maxCount'     => 0,
    'columnFields' => [
        'col_name' => [
            'label'     => 'Bezeichnung',
            'inputType' => 'text',
            'eval'      => ['style' => 'width:200px'],
        ],
        'col_type' => [
            'label'     => 'Typ',
            'inputType' => 'select',
            'options'   => ['a' => 'Option A', 'b' => 'Option B'],
            'eval'      => ['style' => 'width:150px'],
        ],
    ],
];

Hierbei steht mm_beispiel für den Tabellennamen des MetaModels und mein_feld für den Spaltennamen des Attributs.

Einstellungen bei den Render-Einstellungen

Das Attribut besitzt eine eigene Render-Einstellung:

Option

Beschreibung

Tabellenkopf verbergen

Blendet die Spaltenüberschriften in der Frontend-Ausgabe aus.

Template

Auswahl eines eigenen Templates für die Ausgabe.

CSS-Klasse

Optionale CSS-Klasse, die dem Ausgabeelement hinzugefügt wird.

Einstellungen bei der Eingabemaske

Wird das Attribut einer Eingabemaske hinzugefügt, stehen folgende Optionen zur Verfügung:

Darstellung

Option

Beschreibung

Backend-Klasse

CSS-Klassen für die Darstellung des Feldes im Backend-Formular.

Template für das Backend

Auswahl eines eigenen Widget-Templates für das Backend-Formular.

Filterregeln

Das Multi-Tabellen-Attribut kann mit folgenden Filterregeln verwendet werden:

Filterregel

Hinweis

Einzelauswahl / Mehrfachauswahl

Filtert nach vorhandenen Zellwerten (Distinct-Werte aus der Wertetabelle).

Sonderfunktionen

Datenbank-Speicherung

Die Tabellenwerte werden nicht in der MetaModel-Tabelle gespeichert, sondern in der eigenen Wertetabelle tl_metamodel_tablemulti mit den Spalten att_id, item_id, row (Zeilenindex), col (Spaltenbezeichner) und value. Dadurch wird keine Spalte in der MM-Tabelle angelegt und keine DB-Migration ist nötig.

Widget-Typen je Spalte

Im Gegensatz zum Text-Tabellen-Attribut können die einzelnen Spalten mit beliebigen Contao-Widget-Typen belegt werden: text, select, checkbox, radio, datePicker, colorPicker usw.

Speicherformat

Binäre UUIDs werden vor der Speicherung in lesbare UUIDs konvertiert. Array-Werte werden serialisiert gespeichert und beim Auslesen automatisch deserialisiert.