Fehler im clientseitigen Template-System (foreach)

  • Hallo,

    es ist gut möglich, dass dies bewusst so gehandhabt wird - es stellt allerdings einen Unterschied zur serverseitigen Variante dar.

    Wenn man im clientseitigen Template-System eine foreach-Schleife

    Code: foreach_1
    {foreach from=$list item=item}
        ...
    {/foreach}

    anwendet, dann wird diese als fehlerhaft anerkannt. Im serverseitigen Template-System ist diese Schreibweise jedoch korrekt.


    Folgender Code funktioniert clientseitig:

    Code: foreach_2
    {foreach from=$list item="item"}
        ...
    {/foreach}


    Auch wenn es ein kleines Detail ist, ärgerlich ist dieses "Fehlerchen", wenn man so will, vor allem, wenn man versucht, serverseitige Templates an den Client zu übertragen, um diese ggf. dort rendern zu können.


    Mit freundlichen Grüßen,

    Endbuildhero :)

    • Official Post

    Hallo,

    es ist gut möglich, dass dies bewusst so gehandhabt wird - es stellt allerdings einen Unterschied zur serverseitigen Variante dar.

    tatsächlich war mir nicht bekannt, dass es auf Seiten PHPs auch ohne die Quotes geht. Diese Inkonsistenz möchte ich aber aktuell nicht anpassen: Der Parser ist ohnehin schon relativ fragil und die entsprechende Regel in der Grammatik wird auch an anderen Stellen genutzt.


    Ohnehin ist der Parser im JavaScript in seiner Gesamtheit nur eine Approximation an den Parsers im PHP-Code – teilweise bedingt durch die Unterschiede zwischen beiden Programmiersprachen. So unterstützt er nur die grundlegenden Funktionen zur Steuerung des Kontrollflusses, der Großteil des Renderings passiert ja am Server, ist aber mächtig genug, um alle Einsatzfälle, die bislang aufgekommen sind zu behandeln.

    Seit wann gibt es das denn? Und wie soll das dynamisch funktionieren? :o

    Das Feature gibt's grundsätzlich seit WCF 2.0, ist mit WSC 3.0 allerdings einmal komplett neu geschrieben worden: Dort soll dann die WoltLabSuite/Core/Template-Klasse genutzt werden.