TYPO3 / Fluid: IF Viewhelper Inline Schreibweise mit String-Vergleich

Immer immer wieder muss ich nach diesem Snippet suchen, aber damit ist jetzt Schluss! Wenn Fluid Templates sauber und ordentlich sein sollen, muss man immer wieder auf die Inline Schreibweise von ViewHelpern zurückgreifen. Insbesondere der IF Viewhelper macht mir in der richtigen Inline Notation immer wieder Probleme – gerade wenn man einen String vergleichen möchte. Daher hier nun ein paar Snippets.

Die folgenden Snippets stammen aus einem Template mit einem Formular, in dem die Values auf Ja oder Nein geprüft werden müssen um eine entsprechende CSS Klasse zu setzen.

Fluid If Viewhelper Inline Notation

Prüfung ob eine Variable wahr oder falsch bzw. leer ist:

{f:if(condition: frageValue, then: 'active')}

Prüfung einer Variable auf einen bestimmten Wert bzw. String

{f:if(condition: '{frageValue} == \'Ja\'', then: 'active')}

oder

{f:if(condition: '{frageValue} == "Ja"', then: 'active')}

Prüfung einer Variable auf eine Zahl

{f:if(condition: '{frageValue} == 1', then: 'active')}

Prüfung mehrerer Variablen auf bestimmte Strings

{f:if(condition: '{0: frageValue, 1: frageText} == {0: \'Ja\', 1: \'Beispiel\'}', then: 'active')}

6 Kommentare

  • hier scheint ein kleiner Fehler drin zu sein, hinter \’Beispiel\‘ fehlt ne klammmer
    {f:if(condition: ‚{0: frageValue, 1: frageText} == {0: \’Ja\‘, 1: \’Beispiel\‘}‘, then: ‚active‘)}

    ansonsten danke, lange danach gesucht ^^

  • Hallo Anonymus,
    vielen Dank für den Hinweis ich habe es korrigiert 🙂

  • {f:if(condition: ‚{grid-count} == \’op1\“, then: ‚col-md-5 col-md-offset-1‘, else: “)} {f:if(condition: ‚{grid-count} == \’op2\“, then: ‚col-md-4‘, else: “)}

    was ist hier falsch? Könnt ihr helfen?

  • Probier mal:
    {f:if(condition: ‘{grid-count} == \’op1\“, then: ‘col-md-5 col-md-offset-1′, else: “)}

    Du musst aufpassen ob Du zwei Hochkommata “ oder ein Anführungszeichen hast “ … vielleicht werden die Hochkommata auch einfach nur von WordPress geschluckt :-/

  • André Lademann

    Stringvergleiche funktionieren in Fluid derzeit nur mit Arrays, sonst ist die Bedingung immer true wenn irgend ein String gesetzt ist:
    {f:if(condition: ‚{0:frageValue} == {0: \’Ja\‘}‘, then: ‚ active‘)}

    Siehe https://fluidtypo3.org/viewhelpers/fluid/master/IfViewHelper.html
    a String 100″> Will be shown if rank is > 100 Will be shown if rank % 2 != 0. Checks if rank is equal to the result of the ViewHelper „k:bar“ Will result true if {foo.bar}’s represented value equals ’stringToCompare‘.

    Beste Grüße
    André

  • Hallo André,
    in TYPO3 6.2.12 funktioniert
    {f:if(condition: ‚{frageValue} == \’Ja\“, then: ‚active‘)}
    definitiv auch ohne Array.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

Highlighting von Codes ist mit den Tags  [ts], [php], [html], [javascript], [xml] oder [code] möglich.