Zum Inhalt springen

[7.6] Export von Datensätzen über JsonView

Erstellt am 29. November 2015 · 1 Antwort · letzte Antwort am 7. Januar 2016

Tags: JavaScript & AJAX, Import & Export, Frage

mrjnsm ·

Hallo,

ich sitze gerade an einem Backend-Modul, das es erlauben soll den gesamten Pagetree + Datensätze innerhalb einer Page als JSON-Datei zu exportieren, um diese dann in ein Javascript-Framework (AngularJS, React, etc.) einzubinden. Der Export klappt soweit, allerdings nur für die Standardsprache bzw. die Seiten werden in der jeweiligen Sprache richtig rausgeholt. Die Datensätze allerdings nicht.

Hier sind meine bisherigen Arbeitsschritte:

Erweiterung von pages
https://gist.github.com/anonymous/74440d247b5ea8ef768e

Page: Model & Repository
https://gist.github.com/anonymous/5528feaf3d6bfbd31e52

Customer: TCA, Model, Repository
https://gist.github.com/anonymous/5f9cb8183aa530497732

ExportController & ExportJsonView
https://gist.github.com/anonymous/8faebd63309e565d26c6

// Ausgabe für die Standardsprache ( uid = 0 // deutsch )

DebuggerUtility::var_dump( $this->pageRepository->findAll() );
VENDOR\MyExtension\Domain\Model\Page (prototype) (persistent entity) (uid=1, pid=0)
   title => 'Startseite' (10 chars)
   customer => TYPO3\CMS\Extbase\Persistence\Generic\LazyObjectStorage (prototype) (object) (1 items)
      0000000027b06c810000000066a3f195 => VENDOR\MyExtension\Domain\Model\Customer (prototype) (persistent entity) (uid=1, pid=4)
         name => 'Customer (DE)' (10 chars) 
         uid => 1 (integer)
         _localizedUid => 1 (integer)modified
         _languageUid => 0 (integer)modified
         _versionedUid => 1 (integer)modified
         pid => 4 (integer)
   uid => 1 (integer)
   _localizedUid => 1 (integer)modified
   _languageUid => NULL
   _versionedUid => 1 (integer)modified
   pid => 0 (integer)

Wie gesagt, bis hierhin funktioniert der Export mit der Standardsprache tadellos. Aber sobald ich im PageRepository die languageUid mittels

$query->getQuerySettings()->setLanguageUid();

auf eine andere Sprache setze, die im Backend existiert, wird die Seite übersetzt, aber der Datensatz Customer ist weiterhin in der Standardsprache.

Mein Anliegen ist es nun, auch an den Datensatz für die jeweilige Sprache heranzukommen. Hier komme ich nicht weiter und würde gerne auf eure Erfahrung zurückgreifen.

Ich hoffe, dass ich euch alle Informationen zur Verfügung gestellt habe. Wenn nicht, dann einfach schreiben und ich reiche die fehlenden Informationen nach.

Grüße und einen schönen 1. Advent euch allen
Jens

froemken ·

So was in der Art habe ich grad letztens noch gemacht. Hat mich ein paar Tage und Überstunden gekostet.
Vom Prinzip her loopst Du durch alle Eigenschaften rekursiv durch. Stößt Du auf ein Objekt, dann prüfe, ob es sich in der richtigen Sprache befindet. Wenn nicht, dann kümmere Dich selbst darum und ersetze das von Extbase gefundene Objekt durch Dein selbst gefundenes Objekt.

Ist ne Scheiß-Arbeit, aber es funktioniert.