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.
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?
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
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!