What is Smarty?
Why use it?
Use Cases and Work Flow
Syntax Comparison
Template Inheritance
Best Practices
Crash Course
You may use the Smarty logo according to the trademark notice.
For sponsorship, advertising, news or other inquiries, contact us at:
{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}