contao/test — Issue #1427: Dynamische Erzeugung von Defaultwerten mit merkwürdigem Verhalten
Author: importer
Created: 2011-11-29 07:54:32+00:00
State: open
Labels: Defect

Hi Leo,
zunächst einmal: je mehr ich mich mit TYPOlight beschäftige, desto besser gefällts mir. Von meiner Stelle deshalb hier erst einmal ein großes Lob.

Eine kleine Anfrage hätte ich bezüglich eines sehr merkwürdigen Verhaltens, das mit vermutlich aus dem Forum nicht erklärt werden kann, deshalb wende ich mich an Dich.

Möchte Default-Werte an eine Tabelle **DYNAMISCH** vergeben, deshalb eine Callback-Funktion registriert, die das übernehmen soll.

```
class myclass extends Backend {
public function onLoadCallback($dcTable)
{
$default = 'test-title';
$GLOBALS['TL_DCA']['tl_calendar_events']['fields']['title']['default'] = $default;
}
}
```

Der Default-Wert wird allerdings nicht übernommen, eine Erklärung ist auch parat. Das Datenbank-Objekt wird erst initialisiert (mit ggfs. statsischen Default-Werten und beim Rendern des BE-Formulars nur noch ausgelesen.

**Frage 1: Wäre es möglich, das auch so dynamisch deklarativ zu machen?**

Ein Workaround sieht übrigens so aus:

```
public function onLoadCallback($dcTable)
{
$arrDefault = array('title' => 'DefaultValue oder sonstwas');
$eventID = $this->Input->get('id');
$sqlDefaultQuery = $this->Database->prepare('SELECT title FROM tl_calendar_events WHERE id=?')->limit(1)->execute($eventID);

if (

![]($sqlDefaultQuery->title)
{
$sqlDefault = $this->Database->prepare('UPDATE tl_calendar_events %s WHERE id=?')->set($arrDefault)->execute($eventID);
}
}
```

Hier entsteht das zweite Problem. Bei folgendem Code wird plötzlich der Default-Wert 'test-title' zugewiesen - und das erscheint mir doch sehr merkwürdig.

```
public function onLoadCallback($dcTable)
{
$default = 'test-title';
$arrDefault = array('title' => 'DefaultValue oder sonstwas');
$eventID = $this->Input->get('id');
$sqlDefaultQuery = $this->Database->prepare('SELECT title FROM tl_calendar_events WHERE id=?')->limit(1)->execute($eventID);

if ()$sqlDefaultQuery->title)
{
$sqlDefault = $this->Database->prepare('UPDATE tl_calendar_events %s WHERE id=?')->set($arrDefault)->execute($eventID);
}
$GLOBALS['TL_DCA']['tl_calendar_events']['fields']['title']['default'] = $default;
}
```

**Frage 2: Es wäre wichtig, das Vorgehen hier zu vereinheitlichen. Ist das möglich?**

--- _Originally created by yxcvbnm on January 18th, 2010, at 11:23am (ID 1427)_