Hallo zusammen,
ich benutze die Contao 3 RC 1 und entwickle gerade eine Erweiterung speziell für Contao 3. Ich benutze hier nicht mehr die SQL-Datei, sondern die neue Möglichkeit den entsprechenden Datenbank-Feldtyp direkt in der Felddefinition im DCA anzugeben.
Das funktioniert auch alles einwandfrei, allerdings ist mir nachfolgendes Verhalten schleierhaft. Womöglich ist es Absicht oder ich bin gerade etwas zu verwirrt, allerdings erscheint es mir unlogisch. Daher würde ich mich freuen, wenn mir jemand weiterhelfen kann.
Ich definiere z.B. folgendes Feld
Im SQL wird definiert, daß der (Datenbank-)Default-Wert eine leere Zeichenkette sein soll. Als Default-Wert im Backend beim Anlegen eines Elements, soll dagegen der Radio-Button dk_cfsStart vorausgewählt werden.PHP-Code:
$GLOBALS['TL_DCA']['tl_content']['fields']['dk_cfsType'] = array
(
'label' => &$GLOBALS['TL_LANG']['tl_content']['dk_cfsType'],
'default' => 'dk_cfsStart',
'inputType' => 'radio',
'options' => array('dk_cfsStart', 'dk_cfsStop'),
'reference' => &$GLOBALS['TL_LANG']['tl_content'],
'eval' => array('submitOnChange'=>true),
'sql' => "varchar(16) NOT NULL default ''"
);
Erstelle ich nun ein beliebiges Content-Element, so findet sich in der Tabelle te_content in dessen Eintrag in der Spalte dk_cfsType der Wert dk_cfsStart, obwohl dieses Content-Element mit meinem nichts zu tun hat und ich als Default-Wert eine leere Zeichenkette angegeben habe.
Gebe ich in einer Felddefinition kein 'default' an wird das Feld in der Datenbank so behandelt wie im 'sql'-Part angegeben.
Es scheint, daß Contao 3 grundsätzlich bei vorhandenem 'default' dessen Wert in die Datenbank schreibt - selbst bei artfremden Elementen. Hier hätte ich erwartet, daß Contao 3 den Default-Wert aus der SQL-Definition benutzt. Denn wozu sollte in einem Bild-Element in der Spalte dk_cfsType etwas vorhanden sein?
Das Verhalten ist auch nicht auf meine Erweiterung beschränkt. In der Spalte mootype steht z.B. immer der Wert start. Es sei denn es handelt sich um das Start-Element eines Accordeons. Dann findet sich dort mooStart.
Neben den möglichen unschönen Seiteneffekten, falls jemand seine SQL-Abfragen nicht genau genug stellt, ist es doch unnütze Ressourcen-Verschwendung und macht die Daten in der DB nicht gerade übersichtlich...
Da Bilder viel helfen habe ich eine Beispiel-Abfrage angehängt. Dort kann man sehr schön sehen, daß dk_cfsType immer gesetzt wird ('default' definiert) und dk_cfsJsTpl nur in dem Element gesetzt wird wo das Feld auch vorhanden ist ('default' nicht definiert).
Womöglich mach ich die Pferde scheu oder ist es noch ein Bug, aber bevor ich ein Ticket schreibe wollte ich nachfragen, ob ich nicht etwas falsch verstanden habe (was gut möglich sein kann )
Vielen dank schon mal an dieser Stelle...
Edith sagt: Auf dem Bild wurde der Datensatz mit der ID 1 angelegt bevor ich die Erweiterung installiert habe. Daher sind die Werte dort nicht gesetzt.
Lesezeichen