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.