Login:

iMasters | Por uma internet mais criativa e dinâmica

Feeds

Javascript

Feed da seção Javascript

Newsletter de Javascript


Quinta-feira, 01/09/2005 - 13:14 - Por Júlio César Martini
Seções relacionadas:

JavaScript e Smarty - Utilizando a função Literal

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!

Todos os artigos de Júlio César Martini

1 comentários publicados

  • 1. Meus Parabens Julio e uma Duvida?

    Sexta-feira, 30/09/2005, por Francisco Paulino

    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?

    Responder comentário

Poste um comentário


Os textos publicados neste espaço são de responsabilidade única de seus autores (colunistas e leitores) e podem não expressar necessariamente a opinião do iMasters.

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


Indique para um amigo

captcha

TI SHOP Produtos iMasters

  • Lançamento: CD-ROM Treinamento Aplicado de SQL - Lançamento! Treinamento Aplicado de SQL - Aprenda a trabalhar com SQL com bancos de dados Oracle e SQL Server. São mais de 100 tópicos explicados por Mauro Pichilliani, um articulistas mais lidos do iMasters. Aproveite! Apenas R$ 69,90 no TI SHOP.
  • Lançamento: Livro iMasters "O Encontro de 2 Mundos"- Este livro conta com 56 crônicas de profissionais mais admirados e influentes do mercado brasileiro de Internet. Aproveite o preço especial para leitores do iMasters. Apenas R$ 40,00 e envio imediato!
  • DVD Curso Completo de Photoshop - Do conceito à finalização Lançamento! Curso Completo de Photoshop, em DVD, com mais de 230 aulas dividas em 4 módulos: conceito, básico, avançado e finalização. Apenas R$ 69,50 no TI SHOP - Frete com 50% de desconto
  • DVD Javascript Starter - Curso Completo Com mais de 9 horas de vídeo-aulas, é um curso completo sobre Javascript. Ideal para quem deseja aprender a linguagem. Apenas R$ 64,90 no TI SHOP - Frete com 50% de desconto!

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