Attribut für Multi-Column-Wizard

Mit dem Multi-Column-Wizard (MCW) ist es möglich, eine variable Eingabetabelle mit unterschiedlichen Eingabetypen wie Text, Checkboxen, Select in den Spalten zu definieren - mehr zu den Möglichkeiten des MCW auf Github bzw. im Contao-Wiki.

Mit der Erweiterung attribute_tablemulti kann der MCW als Attribut in MetaModels genutzt werden. Es ist jedoch zu beachten, dass der MCW nicht vollständig über das Backend konfiguriert werden kann, sondern über eine entsprechende Datei mit der DCA-Konfiguration. Zudem ist es nicht möglich, über die gespeicherten Werte des MCW-Attributes zu suchen oder zu filtern. Die MCW-Werte werden in der Datenbank als serialisiertes Array gespeichert.

Neben der genannten Version gibt es auch noch das Gegenstück für eine mehrsprachige Nutzung als Erweiterung attribute_translatedtablemulti

Das MCW-Attribut kann z.B. verwendet werden, um in einer Eingabemaske eine variable Anzahl von Eingaben zu machen, die unterschiedliche Eingabetypen beinhalten. Ein einfaches Beispiel wäre die Angabe mehrerer Links mit einem Textfeld für die URL, einem Textfeld für den Linktext und einer Checkbox für das Link-Target.

Die Installation und Verwendung besteht aus den Punkten

  • Installation des Attributes per Composer über Github oder über den Contao Manager

  • Anpassung der DCA-Konfigurationsdatei

Anpassung der DCA-Konfigurationsdatei

Die DCA-Konfigurationsdatei config.php muss an einer geeigneten Stelle in der Contao-Installation abgelegt oder eine bestehende Datei mit den Angaben ergänzt werden. Das kann z.B. erfolgen in

  • app/Resources/contao/config/ (ab Contao 4.4)

  • contao/config/ (ab Contao 4.9)

  • src/AppBundle/Resources/contao/config/ (eigenes Bundle)

Diese ist Datei entsprechend den eigenen MetaModel-Parametern und den gewünschten Feldern mit einem Editor anzupassen - siehe Contao-Wiki.

Eine Konfiguration könnte für das MetaModel „mm_my_table“ mit dem MCW-Attribut „my_mcw“ wie folgt aussehen:

 1<?php
 2// /contao/config/config.php
 3
 4$GLOBALS['TL_CONFIG']['metamodelsattribute_multi']['mm_my_table']['my_mcw'] = array(
 5   'minCount'     => 2,
 6   'maxCount'     => 4,
 7   'tl_class'     => 'clr w50',
 8   'columnFields' => array(
 9      'ts_client_os'     => array(
10         'label'     => 'Meine Optionen',
11         'exclude'   => true,
12         'inputType' => 'select',
13         'options'   => array(
14            'option1' => 'Option 1',
15            'option2' => 'Option 2',
16         ),
17         'eval'      => array('style' => 'width:250px', 'includeBlankOption' => true, 'chosen' => true)
18      ),
19      'ts_client_mobile' => array(
20         'label'     => 'Meine Checkbox',
21         'exclude'   => true,
22         'inputType' => 'checkbox',
23         'eval'      => array('style' => 'width:40px')
24
25      ),
26      'ts_extension'     => array(
27         'label'     => 'Das Textfeld',
28         'inputType' => 'text',
29         'eval'      => array('mandatory' => true, 'style' => 'width:115px')
30      ),
31   ),
32
33);

Hinweis: Die Bezeichnungen in „label“ können auch als Sprach-Array eingebunden werden.

Nach Anpassungen der Konfiguration den Cache leeren!

Ansicht in der Eingabemaske:

img_input_mask