[SP-pm] Templates com CGI puro

Adimir adimircolen at gmail.com
Thu Aug 27 05:35:53 PDT 2009


Andre Carneiro
eu quis dizer o seguinte, tenho padrões de telas tipo tabelas, formularios,
e a idea seria fazer uma template com uma lógica interna para que eu pudesse
passar o numero de colunas, e os resultados independente se a tabela fosse
ex. somente de Nome e Telefone ou se fosse de Nome, telefone, endereço e
email. entendeu ?

E quero analisar os problemas que isso pode gerar futuramente.

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_inteligente.tmpl'; #tmpl é uma
espécie de 'padrão clássico'(opcional).
my $dados = algum_metodo_recuperador_de_dados();

algum_metodo_recuperador_de_dados(); # que pode
_________________
|    |                       |
|    |    template 1    |
|    |                       |
|    |_____________|
|                            |
|       template2       |
|________________|

como se a template 1 fosse utilisada em varias telas e os
"algum_metodo_recuperador_de_dados" retornariam dados diferentes como um
hash{titulo_coluna} = @elementos_da coluna, alguns metodos retornariam nome
e telefone e outro retornaria nome, telefone, end. por ex.

ex: hash{nome} = @nomes
hash{telefone} = @nomes


##########
#::Adimir::#
##########


2009/8/26 Andre Carneiro <andregarciacarneiro em gmail.com>

>
>
> 2009/8/26 Adimir <adimircolen em 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 em pm.org
>> http://mail.pm.org/mailman/listinfo/saopaulo-pm
>>
>
>
>
> --
> André Garcia Carneiro
> Analista/Desenvolvedor Perl
>
>
> _______________________________________________
> SaoPaulo-pm mailing list
> SaoPaulo-pm em pm.org
> http://mail.pm.org/mailman/listinfo/saopaulo-pm
>
-------------- Pr�xima Parte ----------
Um anexo em HTML foi limpo...
URL: <http://mail.pm.org/pipermail/saopaulo-pm/attachments/20090827/56ac0a68/attachment.html>


More information about the SaoPaulo-pm mailing list