{if},{elseif},{else}
Smarty 中的{if}语句与 PHP 中的if语句具有相同的灵活性,并为模板引擎添加了一些额外的功能。每个{if}必须与匹配的{/if}配对。也允许使用{else}和{elseif}。所有的 PHP 条件和函数都被认可,如 ||, or, &&, and, is_array()等。
如果启用了安全功能,只允许来自安全策略的$php_functions属性的 PHP 函数。详情请参见安全部分。
以下是被认可的修饰符列表,它们必须通过空格与周围的元素分隔。注意,列在[括号]中的项目是可选的。在适用的地方显示了 PHP 等价物。
修饰符
| 修饰符 | 替代词 | 语法示例 | 含义 | PHP 等价物 |
|---|---|---|---|---|
| == | eq | $a eq $b | 等于 | == |
| != | ne, neq | $a neq $b | 不等于 | != |
| > | gt | $a gt $b | 大于 | > |
| < | lt | $a lt $b | 小于 | < |
| >= | gte, ge | $a ge $b | 大于或等于 | >= |
| <= | lte, le | $a le $b | 小于或等于 | <= |
| === | $a === 0 | 检查标识 | === | |
| ! | not | not $a | 否定(一元) | ! |
| % | mod | $a mod $b | 模 | % |
| is [not] div by | $a is not div by 4 | 能被...整除 | $a % $b == 0 | |
| is [not] even | $a is not even | [不是]偶数(一元) | $a % 2 == 0 | |
| is [not] even by | $a is not even by $b | 分组级别[不是]偶数 | ($a / $b) % 2 == 0 | |
| is [not] odd | $a is not odd | [不是]奇数(一元) | $a % 2 != 0 | |
| is [not] odd by | $a is not odd by $b | [不是]奇数分组 | ($a / $b) % 2 != 0 |
示例
{if $name eq 'Fred'}
欢迎您,先生。
{elseif $name eq 'Wilma'}
欢迎您,女士。
{else}
欢迎,无论你是什么。
{/if}
{* 一个带有 "or" 逻辑的示例 *}
{if $name eq 'Fred' or $name eq 'Wilma'}
...
{/if}
{* 与上面相同 *}
{if $name == 'Fred' || $name == 'Wilma'}
...
{/if}
{* 允许使用括号 *}
{if ( $amount < 0 or $amount > 1000 ) and $volume >= #minVolAmt#}
...
{/if}
{* 你还可以嵌入php函数调用 *}
{if count($var) gt 0}
...
{/if}
{* 检查是否为数组。 *}
{if is_array($foo) }
.....
{/if}
{* 检查是否不为空。 *}
{if isset($foo) }
.....
{/if}
{* 测试值是否为偶数或奇数 *}
{if $var is even}
...
{/if}
{if $var is odd}
...
{/if}
{if $var is not odd}
...
{/if}
{* 测试变量是否可以被4整除 *}
{if $var is div by 4}
...
{/if}
{*
测试变量是否是偶数,按两个分组。即,
0=偶数,1=偶数,2=奇数,3=奇数,4=偶数,5=偶数,等等。
*}
{if $var is even by 2}
...
{/if}
{* 0=偶数,1=偶数,2=偶数,3=奇数,4=奇数,5=奇数,等等。 *}
{if $var is even by 3}
...
{/if}
{if isset($name) && $name == 'Blog'}
{* 做一些事情 *}
{elseif $name == $foo}
{* 做一些事情 *}
{/if}
{if is_array($foo) && count($foo) > 0}
{* 执行一个foreach循环 *}
{/if}