if, else, elseif

概要

<#if condition>
  ...
<#elseif condition2>
  ...
<#elseif condition3>
  ...
...
<#else>
  ...
</#if>

这里:

  • condition, condition2, 等:将被计算成布尔值的表达式。

elseifelse 是可选的。

描述

你可以使用 ifelseifelse 指令来条件判断是否越过模板的一个部分。 condition 必须计算成布尔值, 否则错误将会中止模板处理。elseifelse 必须出现在 if 内部 (也就是,在 if 的开始标签和结束标签之间)。 if 中可以包含任意数量的 elseif(包括0个) 而且结束时 else 是可选的。比如:

只有 if 没有 elseifelse

<#if x == 1>
  x is 1
</#if>

只有 if 没有 elseif 但是有 else

<#if x == 1>
  x is 1
<#else>
  x is not 1
</#if>

if 和两个 elseif 但是没有 else

<#if x == 1>
  x is 1
<#elseif x == 2>
  x is 2
<#elseif x == 3>
  x is 3
</#if>

if 和三个 elseif 还有 else:

<#if x == 1>
  x is 1
<#elseif x == 2>
  x is 2
<#elseif x == 3>
  x is 3
<#elseif x == 4>
  x is 4
<#else>
  x is not 1 nor 2 nor 3 nor 4
</#if>

要了解更多布尔表达式,可以参考:模板开发指南/模板/表达式.

你(当然)也可以嵌套 if 指令:

<#if x == 1>
  x is 1
  <#if y == 1>
    and y is 1 too
  <#else>
    but y is not
  </#if>
<#else>
  x is not 1
  <#if y < 0>
    and y is less than 0
  </#if>
</#if>
Note:

当你想测试是否 x > 0x >= 0,编写 <#if x > 0><#if x >= 0> 是错误的, 因为第一个 > 会结束 #if 标签。要这么来做,可以编写 <#if x gt 0><#if gte 0>。也请注意,如果比较发生在括号内部,那么就没有这样的问题, 比如 <#if foo.bar(x > 0)> 就会得到想要的结果。