Catalyst é sem dúvidas o melhor framework web do momento. E vai continuar sendo por muito tempo. <br>Vá em frente, você não vai se arrepender, ninguem se arrepende. <br>Leia o manual do catalyst no cpan, lá tem tudo que você irá precisar inicialmente. A documentação é bastante farta e completa.<br>
Recomendo HTML::FormHandler para trabalhar formulários web.<br>É bom se familiarizar também com DBIx::Class, conforme suas dúvidas forem aparecendo.... aqui estão todas as respostas para as questões de acesso a banco de dados... leia aqui antes de perguntar, garanto que a resposta está em alguma página do DBIx::Class.<br>
<br>Um exemplo de acesso à tabela produtos com DBIx::Class:<br><br>my $products = $c->model('DB::Product')<br> ->search({<br> categoria => 'computadores', #traz tudo que é categoria computadores<br>
preco => { '>=', 500 }, # traz tudo com preço >= 500<br> },{<br> rows=> 5, #opcional, a busca vai trazer limitar a 5 linhas<br>
page=> 1, #opcional, vai trazer apenas esta página<br> order_by => { -asc => [qw/created/] }, #opcional, vai ordenar por data de criação <br>
});<br><br>ai vc pode fazer um loop nos produtos ex:<br><br> while (my $p = $products->next) {<br> $c->log->debug('nome do produto', $p->nome );<br> $c->log->debug('nome do produto', $p->categoria );<br>
$c->log->debug('nome do produto', $p->preco );<br> }<br><br>Se você percebeu, esses códigos seriam executados nos controllers... como seria isso em uma view ? o catalyst utiliza o Template::Toolkit, que tem um excelente manual tb: ex <a href="http://template-toolkit.org/docs/manual/VMethods.html#method_match">http://template-toolkit.org/docs/manual/VMethods.html#method_match</a><br>
<br>então seguindo o exemplo acima, vamos supor que eu selecionei os $products... então o próximo passo seria jogar esses $products no "stash" do catalyst.. <br>O "stash" é um espaço/hash reservado onde você pode armazenar dados que serão acessados em outros métodos/view/partes do código.<br>
Então para setar os $products no stash faremos o seguinte:<br><br>$c->stash(<br>products => $products,<br>template => 'template-legal.tt2',<br>current_view => 'TemplatePadrao',<br>);<br><br>pronto, eu poderia ir para outro método e acessar o $c->stash->{products} , ou, posso ir para minha View e acessá-lo, conforme o exemplo: <br>
<br>(no template-legal.tt2):<br><br><div><br>....<br>[% WHILE (product = products.next) %]<br>Nome: [% product.nome %]<br>Preço: [% product.preco %]<br>Categoria: [% product.categoria %]<br>[% END %]<br>....<br></div><br>
<br><br><br>Ok, agora só falta um exemplo de formulário com HTML::FormHandler:<br><br> my $form = HTML::FormHandler->new( <br> field_list => [<br><br> nome => { <br> type => 'Text', <br>
label => 'Nome',<br> required => 1,<br> required_message => 'Campo obrigatório' ,<br> },<br><br> sexo => { <br>
type => 'Select', <br>
label => 'Sexo',<br>
required => 1,<br>
required_message => 'Campo obrigatório' ,<br> options => [<br> { label => 'SIM', value => 'SIM'},<br> { label => 'NÃO', value => 'NÃO'},<br>
],<br>
},<br><br> submit => {<br> type => 'Submit', <br> value => 'Salvar',<br> },<br><br> ]);<br><br><br><br><br><br> if ($c->req->method eq 'POST') { #Assim podemos verificar o methodo do request<br>
$form->process( params => $c->req->params ); # E acessar as chaves/valores do formulario postado<br> }<br><br> $c->stash( form => $form ); # Jogamos o form no stash para acessar na view<br>
<br><br> return unless $form->validated; # Tentamos validar o formulario<br><br> $c->response->redirect($c->uri_for('/')); # e assim redirecionamos para a url /<br>
<br><br>Certo, depois para renderizar isto na view é muito simples... apenas:<br><br><div><br>...<br>[% form.render %]<br>...<br></div><br><br><br><br><br>Espero ter ajudado a visualizar um pouco como as coisas básicas funcionam.<br>
<br>Fora isso o resto é auto explicativo, catalyst é bastante direto e sem complicações. <br>e conforme já foi dito, é possível criar aplicações simples e complexas.<br><br>dá gosto trabalhar com catalyst!!!o melhor framework web, sem dúvidas!<br>
<br>att<br><br>Hernan<br><br><br><br><div class="gmail_quote">2011/1/7 Blabos de Blebe <span dir="ltr"><<a href="mailto:blabos@gmail.com">blabos@gmail.com</a>></span><br><blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">
Eu tenho usado bastante o Mojolicious::Lite para prototipação.<br>
<br>
Experimentei brevemente o Dancer e gostei da documentação.<br>
<br>
Mojo e Dancer tem uma curva de aprendizagem bem suave. Você passa o<br>
olho na doc e sai fazendo.<br>
<br>
Já o Catalyst, por ser mais parrudo é mais chatinho no começo, depois melhora.<br>
<br>
...<br>
<br>
Divagando...<br>
<br>
Não que seja o caso, nem é o foco da thread e talvez até contextualize<br>
o tom da brincadeira, mas se eu vejo uma frase começando com 'não me<br>
importo em *ter que* X', ou 'não tenho *problema* em Y', acende aquele<br>
sinal de alerta.<br>
<br>
*Se* passa pela cabeça a expressão 'ter que programar em Perl' um<br>
conselho que eu dou: *Não faça isso*.<br>
<br>
Perl será uma linguagem iadequada, feia, cheia de caracteres<br>
estranhos, write-only, não importa qual framework utilizado.<br>
<br>
End of divagation<br>
<div><div></div><div class="h5"><br>
Abraços<br>
<br>
2011/1/7 Rogerio Ferreira <<a href="mailto:rogeriotux@gmail.com">rogeriotux@gmail.com</a>>:<br>
> ,<br>
><br>
> Eu não tenho problema em escrever em Perl, Python, ou outra coisa qualquer.<br>
> Só quero escolher um framework pra acelerar as coisas pro Projeto que vou<br>
> iniciar.<br>
><br>
> Mas já valeu pelo cases que o Breno passou que usam Catalyst.<br>
><br>
> Em 7 de janeiro de 2011 15:13, Blabos de Blebe <<a href="mailto:blabos@gmail.com">blabos@gmail.com</a>> escreveu:<br>
>><br>
>> Escrever Perl é como sexo.<br>
>><br>
>> Pode ser prazeroso ou dolorozo dependendo de como você fizer.<br>
>><br>
>> Por isso é uma diversão melhor indicada para adultos que sabem o que<br>
>> estão fazendo :)<br>
>><br>
>> Abraços<br>
>><br>
>> 2011/1/7 Rogerio Ferreira <<a href="mailto:rogeriotux@gmail.com">rogeriotux@gmail.com</a>>:<br>
>> > Valeu Breno!<br>
>> ><br>
>> > Como ainda não tomei a decisão sobre qual Framework vou usar, a sua<br>
>> > explanação vai dar alguma orientação. Mas vou fazer mais alguns testes<br>
>> > com o<br>
>> > Catalyst, e como não sou religioso de linguagem alguma, a pesar de já<br>
>> > ter<br>
>> > sido com Python, quando desenvolvia com Zope/Plone, não me importo em<br>
>> > ter<br>
>> > que escrever código em Perl.<br>
>> ><br>
>> > Obrigado pelas informações.<br>
>> ><br>
>> > Em 7 de janeiro de 2011 12:56, breno <<a href="mailto:breno@rio.pm.org">breno@rio.pm.org</a>> escreveu:<br>
>> >><br>
>> >> 2011/1/7 Rogerio Ferreira <<a href="mailto:rogeriotux@gmail.com">rogeriotux@gmail.com</a>>:<br>
>> >> > Oi Pessoal,<br>
>> >> ><br>
>> >><br>
>> >> Oi Rogério, bem-vindo!<br>
>> >><br>
>> >> > Estou postando essa mensagem na lista, pois acredito que não lugar<br>
>> >> > melhor<br>
>> >> > para chegar a uma conclusão. Já conheço alguns Frameworks, CMSs,<br>
>> >> > etc...,<br>
>> >> > e<br>
>> >> > algumas linguagens de scripting. Eu tenho um projeto para iniciar e<br>
>> >> > andei<br>
>> >> > pesquisando sobre o Catalyst, apesar de conhecer Rails, e como não<br>
>> >> > gosto<br>
>> >> > muito de Django, a pesar de gostar de python, eu tenho pretensão de<br>
>> >> > usar<br>
>> >> > o<br>
>> >> > Catalyst neste projeto. Por isso gostaria de saber de vocês, já que<br>
>> >> > aqui<br>
>> >> > é a<br>
>> >> > vossa praia, sobre suas experiências com o Framework, tais como:<br>
>> >> > Agilidade<br>
>> >> > para Produzir Resultados, Performance, Manutenção de<br>
>> >> > Código Produzido e<br>
>> >> > projetos que já usam Catalyst em ambiente de grande demanda de<br>
>> >> > acessos<br>
>> >> > simultaneos.<br>
>> >> ><br>
>> >> > Quem puder compartilhar comigo algo a respeito, eu ficarei grato.<br>
>> >> ><br>
>> >><br>
>> >> O Catalyst é um excelente framework, estável e robusto, e permite o<br>
>> >> desenvolvimento de aplicações escaláveis desde a primeira linha de<br>
>> >> código. De fato, ele foi projetado pra isso, então o primeiro<br>
>> >> resultado pode não ser tão rápido quando em um framework mais simples,<br>
>> >> mas o quinto resultado será muito mais rápido e gratificante. Se vc<br>
>> >> leu o XKCD dessa semana[<a href="http://xkcd.com/844/" target="_blank">http://xkcd.com/844/</a>], o Catalyst faz um<br>
>> >> esforço bastante válido e razoável pra ligar o "code right" com o<br>
>> >> "code fast" (e, quem sabe, te tirar eventualmente do loop infinito e<br>
>> >> levar ao mítico "good code") :-)<br>
>> >><br>
>> >> A agilidade para produzir resultados, infelizmente, e<br>
>> >> consequentemente, depende do seu grau de conhecimento. Mais ainda<br>
>> >> (alguns diriam até que principalmente), é importante que ele se<br>
>> >> encaixe com seu modo de pensar. Como o Catalyst é a grande cola entre<br>
>> >> soluções de templating e ORMs, vc precisa saber usar todas essas<br>
>> >> pontas para chegar a resultados palpáveis. Do lado das Views temos o<br>
>> >> Template Toolkit como escolha da maioria. Já para o Model você pode ir<br>
>> >> do robusto DBIx::Class a alternativas como MongoDB, CouchDB ou mesmo<br>
>> >> KiokuDB.<br>
>> >><br>
>> >> Experimente fazer o<br>
>> >> tutorial[<a href="http://search.cpan.org/perldoc?Catalyst::Manual::Tutorial" target="_blank">http://search.cpan.org/perldoc?Catalyst::Manual::Tutorial</a>] e<br>
>> >> ver se vc se sente confortável com o Catalyst. O tutorial cobre ainda<br>
>> >> o básico de Template Toolkit e DBIx::Class. Se gostar, pode comprar o<br>
>> >> livro<br>
>> >><br>
>> >> [<a href="http://www.amazon.co.uk/Definitive-Guide-Catalyst-Maintainable-Applications/dp/1430223650?&camp=2486&linkCode=wey&tag=enligperlorga-21&creative=8882" target="_blank">http://www.amazon.co.uk/Definitive-Guide-Catalyst-Maintainable-Applications/dp/1430223650?&camp=2486&linkCode=wey&tag=enligperlorga-21&creative=8882</a>].<br>
>> >> Se não gostar, não vale muito a pena insistir, e o mundo Perl está<br>
>> >> cheio de alternativas bacanas para outros meios de pensar, como o<br>
>> >> Mojolicious e o Dancer.<br>
>> >><br>
>> >> O desempenho de soluções web depende muito da infraestrutura por<br>
>> >> baixo. Se vc vem de Rails, sabe que um bom hardware faz toda a<br>
>> >> diferença, que o grande gargalo é o banco, e que muitas vezes sai mais<br>
>> >> em conta pagar por uma melhoria na infra do que pagar um ou mais devs<br>
>> >> pra otimizar o código. Dito isso, sim, as facilidades oferecidas pelo<br>
>> >> Catalyst compensam e muito o overhead que ele causa, ainda mais<br>
>> >> rodando em cima de um fastcgi.<br>
>> >><br>
>> >> Ao contrário de muitas soluções, o Catalyst não coloca propaganda em<br>
>> >> headers ou coisa que o valha, então é difícil listar sites com ele a<br>
>> >> menos que o dev procure a comunidade e avise. Se vc quer um exemplo de<br>
>> >> "projetos que já usam Catalyst em ambiente de grande demanda de<br>
>> >> acessos simultânos", um bom exemplo é o YouPorn[<a href="http://www.youporn.com" target="_blank">http://www.youporn.com</a><br>
>> >> - NSFW], que circula entre os 50 sites mais visitados do mundo. O<br>
>> >> iPlayer da BBC não é muito conhecido aqui no Brasil, mas também é de<br>
>> >> altíssimo tráfego.<br>
>> >><br>
>> >> Espero ter ajudado. Se sobrou alguma dúvida, tamos aí pra isso :-)<br>
>> >><br>
>> >> []s<br>
>> >><br>
>> >> -b<br>
>> >> =begin disclaimer<br>
>> >> Sao Paulo Perl Mongers: <a href="http://sao-paulo.pm.org/" target="_blank">http://sao-paulo.pm.org/</a><br>
>> >> SaoPaulo-pm mailing list: <a href="mailto:SaoPaulo-pm@pm.org">SaoPaulo-pm@pm.org</a><br>
>> >> L<<a href="http://mail.pm.org/mailman/listinfo/saopaulo-pm" target="_blank">http://mail.pm.org/mailman/listinfo/saopaulo-pm</a>><br>
>> >> =end disclaimer<br>
>> ><br>
>> ><br>
>> ><br>
>> > --<br>
>> > Rogerio Ferreira<br>
>> > <a href="http://rogerioferreira.objectis.net" target="_blank">http://rogerioferreira.objectis.net</a><br>
>> > <a href="http://www.howtoday.com.br" target="_blank">http://www.howtoday.com.br</a><br>
>> > <a href="http://events.linuxfoundation.org/events/linuxcon-brazil/schedule" target="_blank">http://events.linuxfoundation.org/events/linuxcon-brazil/schedule</a><br>
>> > <a href="http://www.xen.org/files/XDBrazil2010/SpeakerProfiles.pdf" target="_blank">http://www.xen.org/files/XDBrazil2010/SpeakerProfiles.pdf</a><br>
>> > Fone: (11) 9424-0419<br>
>> > --------------------------------------------------------<br>
>> > LPI 302 (Mixed Environment) Specialty<br>
>> > Senior Level Linux Professional (LPIC-3)<br>
>> > Advanced Level Linux Professional (LPIC-2)<br>
>> > Junior Level Linux Professional (LPIC-1)<br>
>> ><br>
>> > =begin disclaimer<br>
>> > Sao Paulo Perl Mongers: <a href="http://sao-paulo.pm.org/" target="_blank">http://sao-paulo.pm.org/</a><br>
>> > SaoPaulo-pm mailing list: <a href="mailto:SaoPaulo-pm@pm.org">SaoPaulo-pm@pm.org</a><br>
>> > L<<a href="http://mail.pm.org/mailman/listinfo/saopaulo-pm" target="_blank">http://mail.pm.org/mailman/listinfo/saopaulo-pm</a>><br>
>> > =end disclaimer<br>
>> ><br>
>> ><br>
>> =begin disclaimer<br>
>> Sao Paulo Perl Mongers: <a href="http://sao-paulo.pm.org/" target="_blank">http://sao-paulo.pm.org/</a><br>
>> SaoPaulo-pm mailing list: <a href="mailto:SaoPaulo-pm@pm.org">SaoPaulo-pm@pm.org</a><br>
>> L<<a href="http://mail.pm.org/mailman/listinfo/saopaulo-pm" target="_blank">http://mail.pm.org/mailman/listinfo/saopaulo-pm</a>><br>
>> =end disclaimer<br>
><br>
><br>
><br>
> --<br>
> Rogerio Ferreira<br>
> <a href="http://rogerioferreira.objectis.net" target="_blank">http://rogerioferreira.objectis.net</a><br>
> <a href="http://www.howtoday.com.br" target="_blank">http://www.howtoday.com.br</a><br>
> <a href="http://events.linuxfoundation.org/events/linuxcon-brazil/schedule" target="_blank">http://events.linuxfoundation.org/events/linuxcon-brazil/schedule</a><br>
> <a href="http://www.xen.org/files/XDBrazil2010/SpeakerProfiles.pdf" target="_blank">http://www.xen.org/files/XDBrazil2010/SpeakerProfiles.pdf</a><br>
> Fone: (11) 9424-0419<br>
> --------------------------------------------------------<br>
> LPI 302 (Mixed Environment) Specialty<br>
> Senior Level Linux Professional (LPIC-3)<br>
> Advanced Level Linux Professional (LPIC-2)<br>
> Junior Level Linux Professional (LPIC-1)<br>
><br>
> =begin disclaimer<br>
> Sao Paulo Perl Mongers: <a href="http://sao-paulo.pm.org/" target="_blank">http://sao-paulo.pm.org/</a><br>
> SaoPaulo-pm mailing list: <a href="mailto:SaoPaulo-pm@pm.org">SaoPaulo-pm@pm.org</a><br>
> L<<a href="http://mail.pm.org/mailman/listinfo/saopaulo-pm" target="_blank">http://mail.pm.org/mailman/listinfo/saopaulo-pm</a>><br>
> =end disclaimer<br>
><br>
><br>
=begin disclaimer<br>
Sao Paulo Perl Mongers: <a href="http://sao-paulo.pm.org/" target="_blank">http://sao-paulo.pm.org/</a><br>
SaoPaulo-pm mailing list: <a href="mailto:SaoPaulo-pm@pm.org">SaoPaulo-pm@pm.org</a><br>
L<<a href="http://mail.pm.org/mailman/listinfo/saopaulo-pm" target="_blank">http://mail.pm.org/mailman/listinfo/saopaulo-pm</a>><br>
=end disclaimer<br>
</div></div></blockquote></div><br>