我在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都会显示。
答案 0 :(得分:0)
就像PHP变量一样,Smarty变量“unset”之间存在差异,而且它只是一个对人类看起来空的值。
在这种情况下,始终会处理{capture}
块,并始终将其分配给变量,因此变量将始终存在,并且其中包含一些字符串内容。
你需要测试的不是它的存在,而是它的内容 - 它是一个空字符串,或者更可能是一个只包含位于你的Smarty标签之间的空格的字符串。
与PHP类似,在Smarty {if}
语句中,一个完全为空的字符串的计算结果为false,因此您可以说{if !$ws}...{/if}
来检测它。但是你想忽略空白,所以你可能想要的是{if !trim($ws)}...{/if}