Zum Inhalt springen

Nested For-Loops

Erstellt am 3. Februar 2011 · 4 Antworten · letzte Antwort am 7. Oktober 2011

Tags: Frage

toifel ·

Hallo zusammen,

seit gestern versuche ich mich an meiner ersten extBase Extension und komme mir mitlerweile wieder so richtig unwissend vor.
Folgendes Problem habe ich: Das Objectmodel steht soweit und funktioniert tadellos, meine listView schickt folgendes Objekt an Fluid. Das Ergebnis aus $this->entriesRepository->findAll(); sieht so aus:

[var1:protected] => 1299711600
[var2:protected] =>
[var3:protected] => Tx_EXT_Domain_Model_Details Object
(
[var31:protected] => 0
[var32:protected] => 2
[var33:protected] => 2

Mit einer normalen <f:for> Schleife bekomme ich auch soweit alles ausgegeben. Problematisch wird es aber bei "var3" - hier würde ich normalerweise eine verschachtelte Schleife einsetzen. So sieht mein Versuch aus:

<f:for each="{entries}" as="entry">
<f:for each="{entry.var3}" as="detail">
FOR: {detail.var31}<br />
</f:for>
</f:for>

Das führt zu folgendem Error, der ansich auch logisch ist: The argument "each" was registered with type "array", but is of type "object" in view helper "Tx_Fluid_ViewHelpers_ForViewHelper".

Kann man das irgendwie ohne einen eigenen ViewHelper lösen?

Danke und Gruß,
Martin

Willi ·

Gibt es inzwischen eine Lösung für verschachtelte ForEach Schleifen? Ich bekomme einen ähnlichen Fehler:

#1237900529: The argument "each" was registered with type "array", but is of type "boolean" in view helper "Tx_Fluid_ViewHelpers_ForViewHelper"

Ich möchte damit nur zwei ineinander verschachtelte Arrays ausgeben.

jank ·

Eigentlich gibt es hier keine Probleme.
Ich schreibe gerade an einem Projekt in dem ich bei Bedarf endlos viele Verschachtelungen habe.

Wichtig ist es im Model den Typ richtig festzulegen.
Bei einer Beziehung zu einem anderen Model muss der Typ dem Klassennamen des anderen Model's entsprechen (1:1) oder Tx_Extbase_Persistence_ObjectStorage<Tx_[ExtensionName]_Domain_Model_[Model]> (1:n, n:m)

Bitte korrigieren, falls ich falsch liege.