[SP-pm] Templates com CGI puro

Andre Carneiro andregarciacarneiro at gmail.com
Wed Aug 26 06:30:09 PDT 2009


2009/8/26 Adimir <adimircolen at gmail.com>

> Ola lista, seguinte não é problema exclusivamente, gostaria de opiniões
> sobre usar "use Template" em um sistema que já tem como base o uso de CGI
> básico, emitindo htmls no meio do código, a ideia base e principal seria a
> de separar os htmls totalmente dos codigos perl, e quanto a componentização
> de templates ?


A sua colocação está um pouco estranha. CGI é uma coisa, template é outra,
mas podem(e devem) trabalhar juntos. Mas estou supondo que você quer dizer
que o teu código CGI está gerando HTML sem o uso de templates(espero estar
enganado ;)).

A idéia básica é separar o código do HTML mesmo. Templates é uma das
ferramentas que você deve usar para implementar esse tipo de arquitetura.
Outra ferramenta que você deve dar uma olhada é uma metodologias muito
utilizada hoje:  MVC(Model View Controler -
http://pt.wikipedia.org/wiki/MVC<http://www.google.com.br/url?&ei=8imVSvWLMuCFmQepheytDA&sig2=-Nsh8TJkfsQ6AjJplw4MrA&q=http://pt.wikipedia.org/wiki/MVC&ei=8imVSvWLMuCFmQepheytDA&sa=X&oi=define&ct=&cd=1&usg=AFQjCNGv4UXfV_-9HOJxBGeCnQO0weuhzw>).

Existem frameworks baseados em MVC que você pode utilizar, e estão
disponíveis na maioria das linguagens modernas. Em Perl o mais utilizado e
famoso é o Catalyst ( http://www.catalystframework.org ).

Outra coisa que você deve olhar é o suporte básico a orientação a
objetos(perldoc perlobj - e os módulos  Class, Class::MOB etc.). Depois
seria módulo de extensão ao suporte de orientação a objetos, o módulo Moose(
http://www.iinteractive.com/moose/ ).

Aproveitando, existem canais muito legais que podem ajudar você a esclarecer
suas dúvidas de maneira mais rápida, e também ajuda você a se integrar
melhor na comunidade. Para isso utilizamos o canal IRC - http://p



>
> Ex: templates de listagem (tabelas) que teriam alguma logica embarcada para
> poder ser reutilizada em diferentes tipos de tabelas.
> Essa conponentização não acarreta em problemas ? complicações futuras e
> limitações ?
>
>
O que você quis dizer com 'lógica embarcada' ??? Desculpe a ignorância...

Não entendi exatamente o seu problema. Gostaria que explicasse melhor
exatamente o que você precisa fazer(se puder).


Exemplo simples abaixo:

<code>
#! /usr/bin/perl

use strict;
use Template;
use CGI;


my $cgi = CGI->new();
print $cgi->header;

my $template_config = { INTERPOLATE => 0}; #RTFM em Template para mais
detalhes.
my $template = Template->new($template_config);
my $template_file = '/path/to/template/file.tmpl'; #tmpl é uma espécie de
'padrão clássico'(opcional).
my $dados = algum_metodo_recuperador_de_dados();

$template->process($template_file,{texto_h1 => 'TESTE',dados => $dados});
#aqui você pode passar qualquer coisa para o template. Ele suporta as
estruturas de dados existentes em perl, portanto você pode iterá-las caso
necessário dentro do próprio template, através de uma meta-linguagem
própria. Mais detalhes e exemplos em -
http://template-toolkit.org/docs/manual/VMethods.html

sub algum_metodo_recuperador_de_dados {
#extrema preguiça de escrever isso!
}


</code>


#Enquanto isso lá no template...


<code>

<HTML>
<HEADER><!-- um montao de coisa aqui --></HEADER>
<BODY>
<H1>[%texto_h1%]</H1>

<TABLE>
[% FOREACH item IN dados%]
   <TR>
         <td>item.algummetodoouatributo</td>
   </TR>
[% END %]
</TABLE>

</BODY>
</HTML>

</code>


Como vc pode ver, existe um FOREACH dentro do template. Isso faz parte da
meta-linguagem q eu mencionei. Ele itera o objeto que eu passei através do
método 'process'. Qq dúvida escreva aqui, ou entre no irc - irc.perl.org -
canal #sao-paulo.pm



Cheers!




>
> ##########
> #::Adimir::#
> ##########
>
> _______________________________________________
> SaoPaulo-pm mailing list
> SaoPaulo-pm at pm.org
> http://mail.pm.org/mailman/listinfo/saopaulo-pm
>



-- 
André Garcia Carneiro
Analista/Desenvolvedor Perl
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.pm.org/pipermail/saopaulo-pm/attachments/20090826/c1f0e296/attachment-0001.html>


More information about the SaoPaulo-pm mailing list