Escapando da interpretação do Smarty
Algumas vezes é desejável ou mesmo necessário fazer o Smarty ignorar sessões
que em outro caso ele interpretaria. Um exemplo classico é embutindo Javascript ou
código CSS no template. O problema aparece porque estas linguagens usam os
caracteres { e } que são os
delimitadores padrão para o Smarty.
A coisa mais simples é evitar a situação em sí separando o seu código Javascript e
CSS nos seus próprios arquivos e então usar os métodos padrões do HTML para acessa-los.
Incluir conteúdo literal é possível usando blocos {literal} .. {/literal}.
De modo similar ao uso de entidades HTML, você pode usar {ldelim},{rdelim} ou {$smarty.ldelim}
para mostrar os delimitadores atuais.
As vezes é conveniente simplesmente mudar $left_delimiter e
$right_delimiter.
Exemplo 3-6. Exemplo de modificar os delimitadores
<?php
$smarty = new Smarty; $smarty->left_delimiter = '<!--{'; $smarty->right_delimiter = '}-->'; $smarty->assign('foo', 'bar'); $smarty->assign('name', 'Albert'); $smarty->display('example.tpl');
?>
|
Aonde example.tpl é:
Welcome <!--{$name}--> to Smarty
<script language="javascript">
var foo = <!--{$foo}-->;
function dosomething() {
alert("foo is " + foo);
}
dosomething();
</script> |
|
Veja também escape modifier