[1691 Aufrufe]

3.2 Der Abschnitt: Config

Im Abschnitt config legen wir erst einmal fest, wie unsere Daten gespeichert werden sollen, in der Datenbank (\Contao\DC_Table::class), in einer Datei (\Contao\DC_File::class), oder in der Verzeichnisstruktur (\Contao\DC_Folder::class). Der häufigste Fall ist vermutlich \Contao\DC_Table::class. Die Systemeinstellungen nutzen \Contao\DC_File::class, um die Daten in /system/config/localconfig.php zu speichern. Die Dateiverwaltung verwendet \Contao\DC_Folder::class.

Weiterhin können wir hier Details zum SQL festlegen, wie den Primärkey. Auch die Beziehungen der Tabellen, also Eltern- und Kindtabellen werden hier definiert. Wir können auch festlegen, wie die Tabelle bearbeitet werden darf, also ob z. B. das Kopieren, Anlegen oder Löschen von Datensätzen erlaubt sein soll.

Eine Beschreibung aller Einstellungen ist im Handbuch zu finden.

(Bitte auch in diesem Artikel wieder den Vendor-Namespace (oder entsprechenden Ordner) durch Euren eignen ersetzen und nicht Ctocb verwenden! Danke!)

Beispielkonfiguration

Hier eine Minimalkonfiguration des Abschnitts config, die ich sehr häufig verwende:

<?php declare(strict_types=1);

$GLOBALS['TL_DCA']['tl_testtable'] = [
    // Config
    'config' => [
        'dataContainer'     => \Contao\DC_Table::class,
        'enableVersioning'  => true,
        'sql' => [
            'keys' => [
                'id' => 'primary'
            ]
        ]
    ],
    // ...
];

Mit 'dataContainer' => \Contao\DC_Table::class sagen wir Contao, dass die Daten in der Datenbank gespeichert werden sollen.

Mit 'enableVersioning' => true legen wir fest, dass die Änderungen versioniert werden sollen.

Im Abschnitt sql geben wir mit 'keys' => ['id' => 'primary'] an, dass das Feld id den Primärschlüssel darstellt.

Übersicht der gebräuchlisten Optionen

Option: closed

Variablentyp: bool
Beispiel: true

Wird closed auf true gesetzt, können keine neuen Datensätze erzeugt werden, weder durch Anlegen, noch durch Kopieren.

Wenn die Daten überhaupt nicht bearbeitet werden sollen, bietet es sich an, diese Option mit den Optionen notEditable und notCopyable zu kompieren.

Es empfiehlt sich die Option copy aus dem Abschnitt operations zu entfernen, da der Aufruf zu Fehlern führt, weil die Daten nicht erzuegt werden können. Die globale Operation "Neuen Datensatz anlegen" wird automatisch entfernt.

Option: notEditable

Variablentyp: bool
Beispiel: true

Wird notEditable auf true gesetzt können die Datensätze nicht bearbeitet werden. Dies kann für automatisch erzeugte Daten sinnvoll sein, die im Backend nur angezeigt, nicht aber bearbeitet werden sollen.

Wenn die Daten überhaupt nicht bearbeitet werden sollen, bietet es sich an, diese Option mit den Optionen closed und notCopyable zu kompieren.

Es empfiehlt sich die Option edit aus dem Abschnitt operations zu entfernen, da der Aufruf zu Fehlern führt, weil die Daten nicht bearbeitet werden können.

Option: notDeletable

Variablentyp: bool
Beispiel: true

Wird notDeletable auf true gesetzt, können die Datensätze nicht mehr entfernt werden.

Es empfiehlt sich die Option delete aus dem Abschnitt operations zu entfernen, da der Aufruf zu Fehlern führt, weil die Daten nicht gelöscht werden können.

Option: notSortable

Variablentyp: bool
Beispiel: true

Wird notSortable auf true gesetzt, können die Datensätze nicht über das Panel im Kopfbereich sortiert werden. Es sollte auf jeden Fall eine geeignete Sortierung im Abschnitt list angegeben werden.

Option: notCopyable

Variablentyp: bool
Beispiel: true

Wird notCopyable auf true gesetzt, können die Datensätze nicht mehr kopiert werden.

Wenn die Daten überhaupt nicht bearbeitet werden sollen, bietet es sich an, diese Option mit den Optionen closed und notEditable zu kompieren.

Es empfiehlt sich die Option copy aus dem Abschnitt operations zu entfernen, da der Aufruf zu Fehlern führt, weil die Daten nicht kopiert werden können.

Option: notCreatable

Variablentyp: bool
Beispiel: true

Wird notCreatable auf true gesetzt, können keine neuen Datensätze angelegt werden. Dies ist immer dann sinnvoll, wenn die Daten ausschließlich automatisch erzeugt werden sollen.

Es ist zu beachten, dass Datensätze immer noch kopiert werden können! Dies kann mit der Option notCopyable unterbunden werden.

Option: switchToEdit

Variablentyp: bool
Beispiel: true

Wird switchToEdit auf true gesetzt, wird der Button "Speichern und Kindelemente bearbeiten" angezeigt. Dies funktioniert nur, wenn im Abschnitt list unter sorting im Feld mode der Mode 4 gewählt wurde, also die Ansicht der Datensätze einer Kindtabelle. (Wir werden die einzelnen Darstellungsformen noch im Beitrag über den Abschnitt list behandeln.)

Option: enableVersioning

Variablentyp: bool
Beispiel: true

Wird enableVersioning auf true gesetzt, speichert Contao bei jeder Änderung eine neue Version. Diese Versionen können dann später wieder hergestellt werden.

Option: doNotCopyRecords

Variablentyp: bool
Beispiel: true

Wird doNotCopyRecords auf true gesetzt, werden die Kinddatensätze in dieser Tabelle mit kopiert, wenn der Elterndatensatz in der Elterntabelle kopiert wird.

Option: doNotDeleteRecords

Variablentyp: bool
Beispiel: true

Wird doNotDeleteRecords auf true gesetzt, werden die Kinddatensätze in dieser Tabelle ebenfalls gelöscht, wenn der Elterndatensatz in der Elterntabelle gelöscht wird.

Option: backlink

Variablentyp: string
Beispiel: do=tl_testtable

Mit backlink kann der "Zurück"-Link angepasst werden.

Option: onload_callback

Variablentyp: array
Möglicher Werte: [class, method]
Beispiel: [\Ctocb\Example\Classes\Contao\Operations\TlTesttable::class, 'myMethod']

Mit onload_callback kann der entsprechende Callback definiert werden. Auf die Details der einzelnen Callbacks gehen wir im nächsten Kapitel ein.

Option: onsubmit_callback

Variablentyp: array
Möglicher Werte: [class, method]
Beispiel: [\Ctocb\Example\Classes\Contao\Operations\TlTesttable::class, 'myMethod']

Mit onsubmit_callback kann der entsprechende Callback definiert werden. Auf die Details der einzelnen Callbacks gehen wir im nächsten Kapitel ein.

Option: ondelete_callback

Variablentyp: array
Möglicher Werte: [class, method]
Beispiel: [\Ctocb\Example\Classes\Contao\Operations\TlTesttable::class, 'myMethod']

Mit ondelete_callback kann der entsprechende Callback definiert werden. Auf die Details der einzelnen Callbacks gehen wir im nächsten Kapitel ein.

Option: oncut_callback

Variablentyp: array
Möglicher Werte: [class, method]
Beispiel: [\Ctocb\Example\Classes\Contao\Operations\TlTesttable::class, 'myMethod']

Mit oncut_callback kann der entsprechende Callback definiert werden. Auf die Details der einzelnen Callbacks gehen wir im nächsten Kapitel ein.

Option: oncopy_callback

Variablentyp: array
Möglicher Werte: [class, method]
Beispiel: [\Ctocb\Example\Classes\Contao\Operations\TlTesttable::class, 'myMethod']

Mit oncopy_callback kann der entsprechende Callback definiert werden. Auf die Details der einzelnen Callbacks gehen wir im nächsten Kapitel ein.

Option: onundo_callback

Variablentyp: array
Möglicher Werte: [class, method]
Beispiel: [\Ctocb\Example\Classes\Contao\Operations\TlTesttable::class, 'myMethod']

Mit onundo_callback kann der entsprechende Callback definiert werden. Auf die Details der einzelnen Callbacks gehen wir im nächsten Kapitel ein.

Option: onversion_callback

Variablentyp: array
Möglicher Werte: [class, method]
Beispiel: [\Ctocb\Example\Classes\Contao\Operations\TlTesttable::class, 'myMethod']

Mit onversion_callback kann der entsprechende Callback definiert werden. Auf die Details der einzelnen Callbacks gehen wir im nächsten Kapitel ein.

Option: onrestore_callback

Variablentyp: array
Möglicher Werte: [class, method]
Beispiel: [\Ctocb\Example\Classes\Contao\Operations\TlTesttable::class, 'myMethod']

Mit onrestore_callback kann der entsprechende Callback definiert werden. Auf die Details der einzelnen Callbacks gehen wir im nächsten Kapitel ein.

Option: onrestore_version_callback

Variablentyp: array
Möglicher Werte: [class, method]
Beispiel: [\Ctocb\Example\Classes\Contao\Operations\TlTesttable::class, 'myMethod']

Mit onrestore_version_callback kann der entsprechende Callback definiert werden. Auf die Details der einzelnen Callbacks gehen wir im nächsten Kapitel ein.

Option: sql

Variablentyp: array
Beispiel: ['keys' => ['id' => 'primary']]

Mit sql kann die Einstellungen der Tabelle in der Datenbank angeben.

Fazit

Auch wenn wir noch nicht alles im Detail besprochen haben, wurden die wichtigsten Optionen behandlet. Diese Auswahl erhebt allerdings keinen Anspruch auf Vollständigkeit. Es gibt in der Dokumentation noch weitere Einstellungen, die sind aus meiner Sicht aber sehr speziell. Da es sich beim Contao Codebook um eine Einführung handelt und nicht um ein Encyclopädie, habe ich mich entschlossen, die anderen Einstellungen hier nicht zu besprechen. Bei Interesse können sie aber im Handbuch nachgeschlagen werden. Im nächsten Kapitel werden wir uns mit den Callbacks beschäftigen.