2011-03-14 68 views
1

我試圖在smarty模板的字符串中使用鍵符號'}',但它會產生一個錯誤。該問題只與'}'相關,而不與'{'相關。 我需要打印:使用}到smarty字符串

var naciones = [{label:'Country',value:'1'},{label:'Country',value:'2'}];;

解決方案:

var naciones = [{/literal}{foreach from=$paises item=pa}{literal}{label:"{/literal}{$pa->getNacionalidad()}{literal}", value:"{/literal}{$pa->getId()}{literal}"},{/literal}{/foreach}{literal}]; 

例如:

{literal} 
<script type="text/javascript"> 
var naciones = [{/literal} 
{foreach from=$paises item=pa} 
{'{label:"'|cat:$pa->getNacionalidad()|cat:'", value:"'|cat:$pa->getId()|cat:'"'}{cat:'"}, '}{/foreach}{literal}]; 
$('#nacionalidad-ac').autocomplete({ 
    source:naciones, 
    change: function(event, ui){ 
    $('#nacionalidad').val(ui.item.value); 
    } 
}); 
</script> 
{/literal} 

感謝

回答

2

您需要{literal} {/literal}標籤正確轉義花括號中的Smarty模板。對於帶有大括號的內聯Javascript也是必需的。

+0

無論如何,最好避免內聯Javascript。 – 2011-03-14 16:22:33

+0

謝謝,我寫道:var naciones = [{/ literal} {foreach from = $ paises item = pa} {literal} {label =「{/ literal」{$ pa-> getNacionalidad()} {literal}「,value : 「{/文字} {$的PA>的getId()} {字面}」},{/文字} {/ foreach}的{字面}]; – returnvoid 2011-03-14 18:10:04

2

您可以使用{}字面停止解析。因此,與一個智者模板「{」看起來像

This is just a text with a {$smartyString} 
There is also an {literal} } {/literal} sign in here that could give you some trouble. 
+0

當然。即時通訊使用文字標籤,但在我的例子中有一個開放/封閉標籤的奇怪組合,我不知道如何應用該原則。 – returnvoid 2011-03-14 17:54:57