extbase Plugin: Datenübergabe View an Controller

  • Marti51 Marti51
    TYPO3-Anwärter
    0 x
    5 Beiträge
    0 Hilfreiche Beiträge
    27. 07. 2011, 14:26

    So, nachdem mein Login-Problem gelöst ist kommt natürlich gleich das nächste Problem hinterher:

    Das Ergebnis einer Action wird mir in der View als zwei Tabellen angezeigt. Diese Daten stecken innerhalb der View in zwei Arrays (wurden vorher per view->assign an den View übergeben). Jetzt will ich diese beiden Arrays einer Funktion (die im Ressources-Ordner liegt und dort auch bleiben muss) übergeben, die daraus eine CSV-Datei erstellt und sie in einem vorher konfigurierten Ordner speichert.

    Optimal wäre natürlich ein Button / Link, der einfach nur die Funktion aufruft, die Arrays übergibt und die aktuelle View selbst bestehen bleibt.

    Was ich (bis jetzt) als Start versucht habe ist, eine neue Action angelegt, dorthin in der View mit den Tabellen einen Link (f:link.action) angelegt und die Arrays als arguments mitgegeben. Das funktioniert aber nur, wenn die Arrays nicht zu groß werden, ansonsten wird die Link-URL zu lang und der Apache steigt aus.

    Jetzt wollte ich ein Formular mit hidden-Elementen machen, die die Arrays enthalten und das ganze per Post übertragen (was immer noch nicht optimal ist, weil ich ja eigentlich in dem aktuellen View bleiben möchte), aber ich bekomme die Arrays nicht aus dem View raus. Mit
    <f:form.hidden name="name" value="{array}"> will es irgendwie nicht funktionieren.


  • 1
  • Freshmeat Freshmeat
    Sternenflotten-Admiral
    0 x
    194 Beiträge
    0 Hilfreiche Beiträge
    27. 07. 2011, 15:21

    Nur mal zwei Mögliche Lösungsansätze.

    Kannst du nicht in der neuen View die alten Parameter mitgeben und das gleiche Suchergebniss erzeugen das du dann per CSV ausgibst?

    oder

    Bei der Ausgabe des Suchergebnis gleichzeitig ein serialisiertes Array in die DB abspeichern und dann die neue View nur mit dem Identifier zum Datenbankeintrag aufrufen -> dann wieder aus dem serialisierten Array die CSV Daten generieren?

  • BlackPixel BlackPixe...
    Sternenflotten-Admiral
    0 x
    230 Beiträge
    3 Hilfreiche Beiträge
    28. 07. 2011, 16:04

    Ich benutze eigentlich für den Transport von Objekten / Arrays immer Sessions.

    Wenn Du bei jedem View die CSV schreiben willst ohne Benutzerinteraktion kannst Du die Funktion ja auch direkt aus der Action callen.

    Ansonsten kannst Du das Objekt/Array`s auch mittels $GLOBALS["TSFE"]->fe_user->setKey("ses", "name", serialize($array)); $GLOBALS["TSFE"]->fe_user->storeSessionData(); speichern und einfach per f:link.action eine neue Action im Controller ansprechen die eben per $array = unserialize($GLOBALS["TSFE"]->fe_user->getKey("ses", "name"); die Daten holt. An dieser Stelle nicht vergessen die Session zurückzusetzen. Dann dürfte eigentlich alles in Butter sein und due hast keine Probleme wegen zu langen Parametern oder musst noch extra was mit DB/Models deswegen machen.

    Gruß Manfred

    TYPO3 Slider Revolution: https://www.rutschmann.biz/extensions/typo3-slider-revolution/
    TYPO3 Layerslider Extension: http://www.rutschmann.biz/extensions/typo3-layerslider/
    TYPO3 Responsive Flipbook Extension: http://www.rutschmann.biz/extensions/typo3-responsive-flipbook/
    TYPO3 PayPal Download Checkout: http://www.rutschmann.biz/extensions/typo3-paypal-download/

    http://www.rutschmann.biz/
    ----------------------------------------------------
    Extbase, Fluid, HTML & CSS Development

  • Marti51 Marti51
    TYPO3-Anwärter
    0 x
    5 Beiträge
    0 Hilfreiche Beiträge
    08. 08. 2011, 19:44

    Sorry das ich erst jetzt antworte (gelesen habe ich eure Antworten), hatte viel um die Ohren. Die Idee mit der Session wurde so umgesetzt, danke!

  • 1