Smarty - 根据{CAPTURE}变量的存在或不存在显示Div

时间:2013-05-28 22:33:29

标签: smarty

我在Smarty中定义了一个{CAPTURE}变量:

{capture name='websitediv'}
  //code to generate some output to be captured.
{/capture}

并将输出分配给模板变量

{capture name='websitediv' assign='ws'}

我在我的代码中设置了条件,根据上面捕获的变量是否有值,将显示或隐藏内容:

<div {if !isset($ws)} style="display:none" {/if}>
   //else do something
</div>

不幸的是,最后一个代码不起作用。无论捕获的变量是否可用,div都会显示。

1 个答案:

答案 0 :(得分:0)

就像PHP变量一样,Smarty变量“unset”之间存在差异,而且它只是一个对人类看起来空的值。

在这种情况下,始终会处理{capture}块,并始终将其分配给变量,因此变量将始终存在,并且其中包含一些字符串内容。

你需要测试的不是它的存在,而是它的内容 - 它是一个空字符串,或者更可能是一个只包含位于你的Smarty标签之间的空格的字符串。

与PHP类似,在Smarty {if}语句中,一个完全为空的字符串的计算结果为false,因此您可以说{if !$ws}...{/if}来检测它。但是你想忽略空白,所以你可能想要的是{if !trim($ws)}...{/if}