[EDIT]
OK, mein ursprüngliches Beispiel war nur ein Beispiel für "Test Case schlecht zusammengebaut". Das Problem ist ein anderes als gedacht: Ich habe mehrere geschachtelte for-Schleifen. Innerhalb der Schleifen werden auch Partials verwendet. Das Problem ist nun, dass der Switch ViewHelper die Expression scheinbar nicht korrekt auflöst. In meinem Partial habe ich ein Feld "field", das durch eine for-Schleife definiert wird. in IF-ViewHelpern wird das Feld auch korrekt verwendet. Im Switch-ViewHelper führt es dazu, dass die Meldung "#1368112037: The case View helper can only be used within a switch View helper" produziert wird.
Das funktioniert nicht:
<f:switch expression="{field.style}">
Das hingegen funktioniert:
<f:switch expression="{object.blocks.{b.index}.lines{l.index}.fields{f.index}.style}">
Wie gesagt: Im IF-ViewHelper wird {field.style} korrekt verwendet, eine Ausgabe funktioniert ebenfalls. Nur im Switch-ViewHelper hakt's.
Viele Grüße,
Christian
Ok, das war auch alles Humbug - ich habe mich hier wohl etwas verrant. Meine Erkenntnisse:
1. Einige der vorhandenen ViewHelper in Fluid sind recht eigenwillig - warum {field.style} im IfViewHelper funktioniert und im SwitchViewHelper nicht ist bis heute für mich nicht ersichtlich
2. Es ist höllische Vorsicht geboten. Der zweite Ausdruck aus meinem Post ist syntaktisch schlicht falsch. Offenbar ist Fluid das aber völlig egal - falsche Ausdrücke werden offenbar ohne Warnung als String durchgereicht.
3. Mir war von Beginn an nicht klar, warum ein Projekt wie Fluid initiiert wurde - ich sehe den Vorteil der Syntax nicht (im Gegenteil - ich halte es für einen großen Nachteil Template-Syntax SGML-kompatibel zu schreiben) und vorhandene Template-Engines sind so weit und flexibel, dass es eigentlich keinen wirklich Bedarf für eine Neuerfindung des Rads gibt. Natürlich ergeben sich Vorteile durch das enge Zusammenspiel von Flow und Fluid - ich bin aber sicher, dass man das auch mit einer bestehenden Template-Engine hätte erreichen können. Die bisher vorhandenen ViewHelper funktionieren aus meiner Sicht teilweise mehr schlecht als recht - ich habe mittlerweile damit begonnen, meine eigenen ViewHelper zu schreiben, um z.B. so elementare Funktionen wie verknüpfte Bedingungen (and, or, Klammerung, ...) zu realisieren.
Ich möchte aber nicht nur einer von den Mecker-Heinis sein, deshalb ganz konstruktiv:
1. Ich würde mir wünschen, dass der Variablenzugriff in Fluid verbessert und vereinfacht wird - es kann und darf in einer Template-Engine nicht sein, dass ich keine Variablen "zusammenbauen" kann
2. Es sollte eine Syntaxprüfung gemacht werden. Wenn erkennbar ist, dass ein Objekt / Array angesprochen wird und ein Syntaxfehler vorhanden ist, darf es aus meiner Sicht nicht einfach so sein, dass der Parameter ohne Warnung als String durchgereicht wird.
3. Mir ist schon klar, dass ich gerade wahrscheinlich so rüberkomme wie der typische "du hast mir was geschenkt, das find' ich aber doof und ich will mehr haben"-Typ. Ich habe größten Respekt vor den Leuten, die so viel Ihrer Zeit und Energie in Projekte wie Flow und Fluid stecken. Ich werde deshalb natürlich auch versuchen, so viel, wie mir möglich (und erlaubt) ist an die Community zurückzugeben.
Viele Grüße,
Christian