Skip to content

{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}