0

我在 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 都会保持显示。

4

2 回答 2

0

就像 PHP 变量一样,Smarty 变量“未设置”和它只是具有一个在人类看来为空的值之间存在差异。

在这种情况下,您的{capture}块总是被处理,并且总是分配给变量,因此变量将永远存在,并且其中包含一些字符串内容。

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

就像在 PHP 中一样,一个完全空的字符串在 Smarty{if}语句中的计算结果为 false,因此您可以说{if !$ws}...{/if}检测到这一点。但是你想忽略空格,所以你可能想要的是{if !trim($ws)}...{/if}

于 2013-05-28T22:41:52.057 回答
0
<div style="{if !isset($ws)}display:none{/if}">
   //else do something
</div>

使用 Smarty,您可能也有引导程序,试试这个。

<div class="{if !isset($ws)}d-none{/if}">
   //else do something
</div>
于 2021-12-16T11:54:22.217 回答