[Frage] [7.6] Export von Datensätzen über JsonView

  • mrjnsm mrjnsm
    TYPO3-Anwärter
    0 x
    5 Beiträge
    0 Hilfreiche Beiträge
    29. 11. 2015, 13:56

    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
    [url]https://gist.github.com/anonymous/74440d247b5ea8ef768e[/url]

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

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

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

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

    1. DebuggerUtility::var_dump( $this->pageRepository->findAll() );

    [code]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)[/code]

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

    1. $query->getQuerySettings()->setLanguageUid();
    auf eine andere Sprache setze, die im Backend existiert, wird die Seite übersetzt, aber der Datensatz [b]Customer[/b] 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


  • 1
  • froemken froemken
    Jedi-Ratsmitglied
    0 x
    811 Beiträge
    1 Hilfreiche Beiträge
    07. 01. 2016, 09:57

    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.

  • 1