Hi,
ich bin gerade dabei, meine erste Extension mit extbase+fluid zu entwickeln. Vorher habe ich allerdings auch nur oberflächlich etwas in der Ext-Entwicklung gemacht.
Ich habe mir als Beispiele blog_example und mittwald_timetrack angeschaut.
Folgendes Problem stellt sich mir allerdings: Ich habe ein Modul für Seminare unter Web angelegt. Dort werden die Inhalte eingetragen und abgespeichert. In der Datenbank landet auch ein Datensatz, allerdings ohne Inhalte.
Wenn ich manuell in der Datenbank die Felder fülle, erscheinen diese allerdings auch nicht in der Ansicht.
Wenn ich im Template {seminar.uid} eingebe, erscheint die passende uid. Wenn ich das von mir definierte Feld {seminar.name} eingebe, erscheint nichts.
Kann mir vielleicht wer helfen, wo ich ansetzen muss, um das Problem lösen zu können?
Ich habe schon bei der Anlage die Werte in den extbase-Klassen weiterverfolgt. Dort sind die Daten noch korrekt vorhanden, aber landen einfach nicht in der DB.
An welcher Stelle wird der letztliche Query abgesetzt? Irgendwo davor muss ja was schief laufen...
Danke schonmal im Voraus!
Ich konnte nun feststellen, dass die Update-Methode (updateRow) gar nicht erst ausgeführt wird.
In der Methode update vom Repository wird ja die Methode replace aufgerufen. Dort vermute ich den Fehler.
$backend = $this->persistenceManager->getBackend();
$session = $this->persistenceManager->getSession();
$uuid = $backend->getIdentifierByObject($existingObject);
if ($uuid !== NULL) {
$backend->replaceObject($existingObject, $newObject);
$session->unregisterReconstitutedObject($existingObject);
$session->registerReconstitutedObject($newObject);
if ($this->removedObjects->contains($existingObject)) {
$this->removedObjects->detach($existingObject);
$this->removedObjects->attach($newObject);
}
}
So sieht das übergebende Objekt aus, das gespeichert werden sollte:
object(Tx_KsSeminartest_Domain_Model_Seminar)#110 (7) { ["name:protected"]=> string(17) "Name des Seminars" ["content:protected"]=> string(19) "Inhalt des Seminars" ["_cleanProperties:private"]=> array(3) { ["name"]=> string(0) "" ["content"]=> string(0) "" ["uid"]=> int(15) } ["uid:protected"]=> int(15) ["_localizedUid:protected"]=> int(15) ["_languageUid:protected"]=> NULL ["_isClone:private"]=> bool(true) }
und das steht in $this->removedObjects
object(Tx_Extbase_Persistence_ObjectStorage)#101 (2) { ["storage:protected"]=> array(0) { } ["isModified:protected"]=> bool(false) }
Auch, wenn hier keiner weiterhelfen konnte: Ich habe den Fehler gefunden und könnte nun für den Rest des Tages #angry# machen.
Es war ein falscher Key im TCA in der ext_tables.php
Nur schade, dass das System das nicht bemerkt, dass man einen falschen Key füllen will. Hätte ich aber wohl mit E_ALL mitgekriegt..naja seis drum 😉