2013-05-28 22 views
0

我已經定義在Smarty的使用{CAPTURE}變量{CAPTURE}變量的存在或不存在顯示一個DIV:Smarty的基於

{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

就像一個PHP變量,Smarty變量之間有一個區別是「未設置」,它只是一個對人類而言看起來是空的值。

在這種情況下,您的{capture}塊總是處理完畢,並且始終分配給變量,因此該變量將始終存在,並且其中包含一些字符串內容。

你需要測試的不是它的存在,而是它的內容 - 它是一個空字符串,或者更可能是一個只包含位於Smarty標籤之間的空白字符串的字符串。

和PHP一樣,在Smarty {if}聲明中,一個完全爲空的字符串的計算結果爲false,因此您可以說{if !$ws}...{/if}來檢測該字符串。但你想忽略空白,所以你可能想要的是{if !trim($ws)}...{/if}

+0

感謝您的答覆。當我使用trim時,div現在已經隱藏了,即使變量$ ws有一個內容。 –

+0

好的,我設法通過將{capture}塊放在{strip}塊中來解決這個問題。感謝您的意見。 –