Extbase Repository: update() persistiert nicht? Nimm den Vorschlaghammer!

Nach wenigen TYPO3 Extbase Erweiterungen stand wohl schon jeder Entwickler einmal vor dem Problem, dass die Änderungen die er an einem Model in seinem Actioncontroller vornimmt, einfach nicht persistiert werden.
Normalerweise persistiert man ein aktualisiertes bzw. verändertes Model ja, indem man beim entsprechenden Repository die Methode update() aufruft und dieser das veränderte Objekt übergibt.

Beispiel in irgendeiner Action eines Extbase Controllers:

# Finde News mit ID 5
$news = $this->newsRepository->findByUid(5);

# Aktualisiere den Titel
$news->setTitle("Der neue Titel");

# Update auf das Repository anwenden
$this->newsRepository->update($news);

Danach könnte jetzt noch irgendein Assign oder ein Redirect an eine andere Action stattfinden und normalerweise würde der Titel zum Beispiel durch ein Redirect auch tatsächlich in der Datenbank gespeichert werden.

ABER DAS FUNKTIONIERT VERDAMMT NOCHMAL MANCHMAL EINFACH NICHT IMMER?!?11

Zum Beispiel wenn einfach keine Weiterleitung erfolgt wie zum Beispiel in einer AJAX Action die auch nicht an ein Fluid Template assign’ed sondern einfach nur ein return zurückgibt oder in irgendeiner Funktion innerhalb eines Models.

Und verdammt nochmal ja, dann nimmt man halt einfach mal den Vorschlaghammer und persistiert das ganze mit dem PersistenceManager.

# Finde News mit ID 5
$news = $this->newsRepository->findByUid(5);

# Aktualisiere den Titel
$news->setTitle("Der neue Titel");

# Update auf das Repository anwenden
$this->newsRepository->update($news);

# Den Vorschlaghammer instanzieren / aus der Kiste kramen
$persistenceManager = $this->objectManager->get("TYPO3\\CMS\\Extbase\\Persistence\\Generic\\PersistenceManager");

# Mit dem Vorschlaghammer in die Datenbank speichern / Nägel mit Köpfen machen
$persistenceManager->persistAll();

Problem gelöst .

4 Kommentare

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

Highlighting von Codes ist mit den Tags  [ts], [php], [html], [javascript], [xml] oder [code] möglich.