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





Guarde e Compartilhe

This page is powered by Blogger. Isn't yours?