Utilizando a classe BasicTemplate
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:
Abaixo o conteúdo do arquivo principal.tpl:
E o conteúdo do arquivo valores.tpl:
O resultado seria o seguinte vendo em HTML:
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>

Muito bom esse artigo! Mas eu acho que o mais completo dos templates é o Smarty...
26/12/2003 9:01pm
(~21 anos atrás)
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.
"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)
Muito legal o funcionamento, mas seria legal vc postar exemplos de utilização...
05/12/2003 4:30pm
(~21 anos atrás)