{if}-Statements in Smarty erlauben die selbe Flexibilität wie in PHP, bis auf ein paar Erweiterungen für die Template-Engine. Jedes {if} muss mit einem {/if} kombiniert sein. {else} und {elseif} sind ebenfalls erlaubt. Alle PHP Vergleichsoperatoren und Funktionen, wie ||, or, &&, and, is_array(), etc. sind erlaubt.
Wenn $security angeschaltet wurde, dann müssen alle verwendeten PHP-Funktionen im IF_FUNCS-Array in dem $security_settings-Array deklariert werden.
Hier eine Liste der erlaubten Operatoren. Bedingungsoperatoren müssen von umgebenden Elementen mit Leerzeichen abgetrennt werden. PHP-Äquivalente sind, sofern vorhanden, angeben.
Operator | Alternativen | Syntax Beispiel | Bedeutung | PHP Äquivalent |
---|---|---|---|---|
== | eq | $a eq $b | ist gleich | == |
!= | ne, neq | $a neq $b | ist ungleich | != |
> | gt | $a gt $b | größer als | > |
< | lt | $a lt $b | kleiner als | < |
>= | gte, ge | $a ge $b | größer oder gleich | >= |
<= | lte, le | $a le $b | kleiner oder gleich | <= |
=== | $a === 0 | identisch | === | |
! | not | not $a | Negation | ! |
% | mod | $a mod $b | Modulo | % |
is [not] div by | $a is not div by 4 | Ist [nicht] teilbar durch | $a % $b == 0 | |
is [not] even | $a is not even | ist [k]eine gerade Zahl | $a % 2 == 0 | |
is [not] even by | $a is [not] even by $b | [k]eine gerade Gruppierung | ($a / $b) % 2 == 0 | |
is [not] odd | $a is not odd | ist [k]eine ungerade Zahl | $a % 2 != 0 | |
is [not] odd by | $a is not odd by $b | [k]eine ungerade Gruppierung | ($a / $b) % 2 != 0 |
Example 7.8. if Anweisung
{* ein Beispiel mit 'eq' (gleich) *} {if $name eq "Fred"} Willkommen der Herr. {elseif $name eq "Wilma"} Willkommen die Dame. {else} Willkommen, was auch immer Du sein magst. {/if} {* ein Beispiel mit 'or'-Logik *} {if $name eq "Fred" or $name eq "Wilma"} ... {/if} {* das selbe *} {if $name == "Fred" || $name == "Wilma"} ... {/if} {* die foldende Syntax ist nicht korrekt, da die Elemente welche die Bedingung umfassen nicht mit Leerzeichen abgetrennt sind *} {if $name=="Fred" || $name=="Wilma"} ... {/if} {* Klammern sind erlaubt *} {if ( $anzahl < 0 or $anzahl > 1000 ) and $menge >= #minMengeAmt#} ... {/if} {* einbetten von php Funktionsaufrufen ('gt' steht für 'grösser als') *} {if count($var) gt 0} ... {/if} {* Auf "ist array" überprüfen. *} {if is_array($foo) } ..... {/if} {* Auf "ist nicht null" überprüfen. *} {if isset($foo) } ..... {/if} {* testen ob eine Zahl gerade (even) oder ungerade (odd) ist *} {if $var is even} ... {/if} {if $var is odd} ... {/if} {if $var is not odd} ... {/if} {* testen ob eine Zahl durch 4 teilbar ist (div by) *} {if $var is div by 4} ... {/if} {* testen ob eine Variable gerade ist, gruppiert nach 2 0=gerade, 1=gerade, 2=ungerade, 3=ungerade, 4=gerade, 5=gerade, etc *} {if $var is even by 2} ... {/if} {* 0=gerade, 1=gerade, 2=gerade, 3=ungerade, 4=ungerade, 5=ungerade, etc *} {if $var is even by 3} ... {/if}