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.