0

Utilizando a classe BasicTemplate

criado por Victor Henrique em 05/12/2003 10:22am
Como já vimos anteriormente, para definir o bloco estático(principal) da classe, utilizamos a função setMain().

Na utilização de blocos dinâmicos não muda muita coisa. As maiores mudanças são nas chamadas a blocos dinâmicos e no tratamento de variáveis.

A BasicTemplate utiliza o conceito que variáveis do bloco estático servem apenas para o bloco estático e variáveis de blocos dinâmicos servem apenas para o bloco a que pertencem.

Neste conceito, um script que tem a variável TITULO no bloco estático pode utilizar o mesmo nome para um bloco dinâmico, com um valor independente.

O modo que a BasicTemplate trata o "parse" dos blocos dinâmicos é bem diferente do que a FastTemplate utiliza, que é um tanto quanto complicado.

A cada chamada de um parse() para um bloco dinâmico da BasicTemplate, ela trata de substituir todas as variáveis e incluir no output do bloco dinâmico o valor do arquivo de template com variáveis substituídas.

Segue um exemplo:

<?php

include
"class.BasicTemplate.php";

$valores
= array("Valor1","Valor2","Valor3");

$tpl
= new BasicTemplate('./tpl'); // como já sabemos, instancia a classe
$tpl
->setMain('principal.tpl'); // define o bloco estático ou principal
$tpl
->setDynamic('valores','valores.tpl');

// assina a variável TITULO do bloco principal
$tpl
->assign('TITULO','Exemplo da classe BasicTemplate');

foreach ($array as $key => $value) { // para cada valor da array
   
// define a variavel titulo para o bloco dinâmico
    $tpl
->assign("TITULO",$value,"valores");    

    $tpl
->parse("valores"); // joga os valores do arquivo de bloco dinâmico para o buffer.
}

// joga o conteúdo de todo o bloco estático e seus blocos dinâmicos para o buffer.
$tpl
->parse();

// imprime o bloco estático e todos os blocos dinâmicos na página PHP
$tpl
->output();
?>

Abaixo o conteúdo do arquivo principal.tpl:

<html>
   
<head>
       
<title>{TITULO}</title>
   
</head>
   
<body>
        Este é meu primeiro script com a classe BasicTemplate.
<br>
        Funcionou corretamente.

       
<table>
           
<tr>
               
<td>Valor</td>
           
</tr>
            {dynamic name=valores}
       
</table>
   
</body>
</html>

E o conteúdo do arquivo valores.tpl:

<tr>
   
<td>{TITULO}</td>
</tr>

O resultado seria o seguinte vendo em HTML:

<html>
   
<head>
       
<title>'Exemplo da classe BasicTemplate</title>
   
</head>
   
<body>
        Este é meu primeiro script com a classe BasicTemplate.
<br>
        Funcionou corretamente.

       
<table>
           
<tr>
               
<td>Valor</td>
           
</tr>
           
<tr>
               
<td>Valor1</td>
           
</tr>
           
<tr>
               
<td>Valor2</td>
           
</tr>
           
<tr>
               
<td>Valor3</td>
           
</tr>
       
</table>
   
</body>
</html>

Comentários:

Mostrando 1 - 3 de 3 comentários
Muito bom esse artigo! Mas eu acho que o mais completo dos templates é o Smarty...
26/12/2003 9:01pm (~21 anos atrás)

Rodrigo Alves disse:
Bom primeiro so pra vc corrigir um erro simples:

"foreach ($array as $key => $value) { // para cada valor da array
"
no lugar de array vc esqueceu de mudar o array para o nome que vc inicializou no começo do script $array tem q ser $valores


Victor li o seu artigo e gostei muito sobre a utilização dessa classe mas concordo com o Diego seria melhor se vc colocasse exemplos disso na pratica.......mesmo assim agradeço e vou tentar estudar mas afundo essa classe que é bem util.
10/12/2003 7:05am (~21 anos atrás)

Diogo Gomes disse:
Muito legal o funcionamento, mas seria legal vc postar exemplos de utilização...
05/12/2003 4:30pm (~21 anos atrás)

Novo Comentário:

(Você pode usar tags como <b>, <i> ou <code>. URLs serão convertidas para links automaticamente.)