[TYPO3-german] Probleme mit TCA und ['crtl']['type']
marcel.gsteiger at milprog.ch
marcel.gsteiger at milprog.ch
Sun Jun 17 19:07:19 CEST 2007
marcel.gsteiger at milprog.ch schrieb:
> Hallo zusammen
>
> Habe vor einiger Zeit eine kleine Extension gestrickt (den Kickstarter
> zuerst verwendend), welche mit Typo3 3.8.1 klaglos funktioniert und den
> Trick mit ['ctrl']['type'] in $TCA benutzt.
>
> Dabei wird zuerst nur ein einziges Feld (das ctrl - Feld) angezeigt;
> erst wenn dessen Wert eingegeben wurde, erscheinen dann je nach Wert im
> CTRL-Feld die übrigen Eingabefelder. Klar: jedes NOT NULL-Feld muss ein
> Default enthalten, das ist auch so in meiner Tabelle.
>
> Nach dem Update auf Typo3 4.1.1 funktioniert nun das Einfügen von
> Datensätzen nicht mehr einwandfrei. Beim Neueinfügen eines Datensatzes
> wird zuerst wie erwartet das ['ctrl'] - Feld angezeigt, wenn ich dann
> aber versuche, dessen Wert zu ändern (und als Folge davon die anderen
> Felder sichtbar zu machen), erhalte ich eine Fehlermeldung
>
> Sie haben nicht die nötigen Rechte, um diese Änderung durchzuführen.
>
> Allerdings hat Typo3 den Datensatz korrekt eingefügt, und auch der
> geänderte Wert im ctrl - Feld ist korrekt eingetragen. Ebenso bin ich
> als admin eingeloggt.
>
> Aufgrund anderen Forumseinträgen habe ich schon versucht, allen
> alphanumerischen Feldern Defaultwerte und "NOT NULL" zuzuordnen (sofern
> das geht, bei den Blobs geht das leider nicht), ohne Erfolg. Tabelle und
> TCA.PHP stimmen 1:1 mit den Zuständen bei Version 3.8 überein.
>
> Ist das ein bekanntes Symptom? Ich habe aus anderen Gründen auf Version
> 4 updaten wollen, wäre also froh, aus diesem Dilemma eine Lösung zu
> finden. Auf jeden Fall ist die Fehlermeldung nicht gerade hilfreich.
>
> (TCA ist etwas lang, wenn das Problem unbekannt ist, versuche ich eine
> Minimalversion zu stricken und hier zu posten).
>
> Danke und Gruss
> --marcel
Nachdem niemand im Forum anbeissen wollte, habe ich nun ein paar Stunden
lang den Fehler einzukreisen versucht. Er scheint im DBAL zu liegen.
Nach langem Suchen stellte ich fest, dass in DBAL die Funktion
class.ux_t3lib_db.php die falsche last_insert_id zurückgab. Diese wurde
dann für den Refresh benutzt.
Am Schluss fand ich heraus, dass der DBAL Debugger noch eingeschaltet
war. Offensichtlich benutzt der DBAL Debugger dieselbe
Datenbankverbindung wie auch die Anwendung selbst, was eigentlich ein
Fehler ist. Wenn nun als Folge eines INSERTs der DBAL Debugger einen
Datensatz in seinen Debuggingtabellen einfügt, erhält dann der Anwender
eine falsche last_insert_id.
Mit
$TYPO3_CONF_VARS['EXTCONF']['dbal']['debugOptions'] = array(
'enabled' => FALSE,
'printErrors' => TRUE,
'EXPLAIN' => 0,
'parseQuery' => 0,
'joinTables' => 1
);
in localconf.php war dann das Problem endlich weg.
Hat mich viel Mühe gekostet, das herauszufinden, ich werde das mal als
Bug von DBAL posten.
--marcel
More information about the TYPO3-german
mailing list