[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