Quinta-feira, 01 de setembro de 2005 às 13h14

JavaScript e Smarty - Utilizando a função Literal

Faltam -1 dias! Inscreva-se agora! O maior encontro de profissionais web da américa latina.

Fala pessoal! Essa semana apresentaremos a função literal, que é de grande utilidade pois os dados localizados entre essa tag não são interpretados pela Smarty. Isso é muito importante quando desejamos incluir códigos de programação como JavaScript em nosso template já que esses contêm caracteres como "{" e "}" que a Smarty tentaria interpretar.

Exemplo prático: literal.php
Para ilustrar criaremos um exemplo onde exibiremos o conteúdo de um array mas antes será emitido um aviso em JavaScript.

<?
//CONSTANTE DA SMARTY / SITE
define("SMARTY_DIR","c:\\pagina\\smarty\\libs\\");
define("SITE","c:\\pagina\\modelo\\");

//DIRETÓRIO ONDE SE ENCONTRA A SMARTY
require_once(SMARTY_DIR."Smarty.class.php");

//INSTANCIA O OBJETO
$smarty = new Smarty;

//PASTA ONDE FICARÁ OS TEMPLATES
$smarty->template_dir = SITE."templates\\";

//ONDE O ENGINE VAI ESCREVER OS ARQUIVOS COMPILADOS EM CACHE
$smarty->compile_dir = SITE."\\templates_c\\";

//ARQUIVOS DE CONFIGURAÇÃO DO TEMPLATES
$smarty->config_dir = SITE."\\configs\\";

//CACHE DOS ARQUIVOS COMPILADOS
$smarty->cache_dir = SITE."\\cache\\";

//SE ESTIVER FALSE, TODA REQUISIÇÃO VAI SER COMPILADA
$smarty->compile_check = true;

//TELA DE DEBUG HABILITADA
$smarty->debugging = false;

//ARRAY
$cores = array (
    "Preto"
  , "Branco"
  , "Azul"
  , "Amarelo"
  , "Verde"
  , "Vermelho" );

//ATRIBUI VALORES AS VARIÁVEIS
$smarty->assign("titulo", "Funções Smarty - Literal ");
$smarty->assign("valores", $cores);

//EXIBE O TEMPLATE
$smarty->display("literal.tpl");

?>

literal.tpl
Template que será responsável por exibir a mensagem em JavaScript.

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>{$titulo}</title>
<h2>{$titulo}</h2>

{literal}
<script language="JavaScript">
<!--
  var contador = 0;
  if(contador == 0) {
    alert("Isso é apenas um teste da função Smarty - Literal");
  }
  else {
    alert("Valor diferente de 0");
  }
//-->
</script>

{/literal}

</head>

<body topmargin="0" leftmargin="0" rigthmargin="0">
<table width="40%" border="1" cellspacing="0" cellpadding="0">
{foreach name=laco from=$valores key=chave item=corrente }
<tr>
<td height="25">{$chave} - {$corrente}</td>
</tr>
{/foreach}
</table>
</body>
</html>

Resultado:

Executando o arquivo literal.php teremos como resultado a figura abaixo:

Após clicar no botão de OK, o conteúdo do array é exibido.

Depurando:

Linha10: Criamos um laço usando a função foreach.
               Ela possui 04 parâmetros:
               from - Array no qual o laço estará baseado.
               item - Nome da variável que estará recebendo o valor do array.
               key - Chave do elemento corrente.
               name - Nome do laço.

Confira abaixo todos os artigos sobre essa série da Smarty:
http://www.imasters.com.br/artigo.php?cn=3483&cc=44
http://www.imasters.com.br/artigo.php?cn=3418&cc=44
http://www.imasters.com.br/artigo.php?cn=3326&cc=44

Para baixar os exemplos desse artigo, clique no link abaixo.

DOWNLOAD

Clique AQUI e faça o download do script.

Semana que vem tem mais. Espero que vocês tenham gostado :-)

Não deixe de nos enviar críticas ou sugestões para o próximo assunto, afinal a coluna é de vocês.

Boa semana a todos!

1 comentário

 Francisco Paulino
30/09/2005 18h08

Meus Parabens Julio e uma Duvida?

Parabens pela sua famosa coluna adquirida na base da massa cefálica... =)
Estou com um pequeno e facil problema de ser resolvido porem ainda nao sei como... tenho um sistema de noticias.... armazeno textos... dentre outras coisas os textos que coloco no mysql via php quando são impressos no meu html por meio do " echo" aparece totalmente colado... ou seja não respeita os paragrafos e quebra de linhas que são inseridos pelos usuarios que alimentam o BD como posso fazer para que quando eu recuperar esses textos do meu DB e faça o echo ele assuma as formatacoes... como por exemplo os paragrafos e quebra de linhas?

Cancelar resposta

Qual a sua opinião?

Faça login abaixo ou cadastre-se rapidamente.


Sobre o Autor
Júlio César Martini atualmente presta serviços de WebMaster/Programador para o UOL (http://www.uol.com.br), Graduado em Tecnólogo em Informática pela UNIFIAN - Faculdades Anhanguera e Pós-Graduado em Desenvolvimento de Software para Web pela UFSCAR. Foi o primeiro profissional a chegar à marca de 100 artigos publicados no iMasters e trabalha com PHP desde 2000. Site: http://www.juliocesarmartini.com

2001 - iMasters FFPA Informática Ltda - Todos os direitos reservados.