[SP-pm] Inserindo variável no pro_process

Luis Motta Campos luismottacampos at yahoo.co.uk
Sat Dec 13 01:05:36 PST 2008


Andre Carneiro wrote:
> Agora para enviar variáveis diretamente para lá, eu sinceramente não
> sei. Champs??? Você é a 'autoridade' em Template Toolkit por aqui.
> Pode dar uma ajuda?

André, esta é por que você pediu.

Daniel, RTFM. Toda a informação que você precisa está no 
Template::Manual, procure pela tag META.

O problema com {PRE,POST}_PROCESS é que ele não foi feito para o que o 
exemplo que o Andy Wardley usa ele. Eu já falei com o Andy sobre isso, 
mas ele diz que é uma coisa tradicional e que não tem tempo para 
inventar um outro exemplo para a documentação.

O {PRE,POST}_PROCESS permite apenas que você leia as informações 
declaradas na definição META do seu template. Apenas valores simples são 
aceitos, nada de variáveis interpoladas ou parâmetros dinâmicos.

Para resolver o problema de criar páginas com títulos e rodapés 
dinâmicos, a solução correta é usar o WRAPPER.

Meu exemplo, completo:

# header.tt
<html>
   <head>
     <title> [% template.title %] </title>
   </head>
   <body>
## EOF

# footer.tt
[%# As merdas do Google deixam tua pagina lenta.
   # Se ainda assim voce quiser incluir, tem de vir aqui.
%]

     <p>Exemplo vers&atilde;o [% template.version %] criado por [% 
template.author %], copyleft [% template.year %].

   </body>
</html>
## EOF

# body.tt
[% META
    title = 'Teste do Mantovani'
    author = 'LMC'
    version = '0.01'
    year = '2008'
%]

     <p>[% message %]
## EOF

# process.pl
#!/usr/bin/perl
use strict;
use warnings;
use Template;
use FindBin;

sub get_template_config {
     return {
         INCLUDE_PATH => $FindBin::Bin,
         INTERPOLATE  => 1,
         ABSOLUTE     => 1,
         POST_CHOMP   => 1,
         PRE_PROCESS  => qq{$FindBin::Bin/header.tt},
         EVAL_PERL    => 0,
         POST_PROCESS => qq{$FindBin::Bin/footer.tt},
     };
}

sub get_template_data {
     return {
         title   => q{Bigorna do Mantovani},
         message => q{O Mantovani precisa aprender a RTFM }
             . q{antes de perguntar na lista},
         footer => q{Criado por LMC em 13/12/2008},
     };
}

my $tt = Template->new(get_template_config);
$tt->process( 'body.tt', get_template_data ) || die $tt->error;
## EOF

Putamplexos.
-- 
Luis Motta Campos is a software engineer,
Perl Programmer, foodie and photographer.


More information about the SaoPaulo-pm mailing list