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 (~20 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 (~20 anos atrás)

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

Novo Comentário:

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