2011-03-14 11 views
1

En essayant d'utiliser le signe '}' à l'intérieur d'une chaîne de template smarty mais cela génère une erreur. Le problème se présente seulement avec '}' et non avec '{'. J'ai besoin d'impression:utiliser} dans la chaîne smarty

var naciones = [{label: 'Pays', valeur: '1'}, {libellé: 'Pays', valeur: '2'}]; Solution

:

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

exemple:

{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} 

grâce

Répondre

2

Vous avez besoin de la balise {literal} {/literal} pour échapper correctement les accolades dans un template Smarty. Aussi nécessaire pour Javascript en ligne qui a des accolades.

+0

Il vaut mieux éviter le Javascript inline quand même. –

+0

merci, j'ai écrit: var naciones = [{/ literal} {foreach de = $ paises item = pa} {littéral} {label: "{/ literal} {$ pa-> getNacionalidad()} {literal}", valeur : "{/ literal} {$ pa-> getId()} {littéral}"}, {/ literal} {/ foreach} {littéral}]; – returnvoid

2

Vous pouvez utiliser {literal} pour arrêter l'analyse syntaxique. Ainsi, un modèle Smarty avec un « { » ressemblerait

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

sûr. Im en utilisant la balise littérale, mais dans mon exemple, il y a un mélange étrange de balises d'ouverture/fermé et je ne sais pas comment appliquer ce principe. – returnvoid

Questions connexes