[SP-pm] Processando forms de maneira simples

Luis Motta Campos monsieur_champs em yahoo.com.br
Quarta Julho 12 03:31:40 PDT 2006


Eduardo Verissimo wrote:
> Boa tarde, monges!
> 
> Tive um insight a respeito de algo que poderia facilitar minha vida, 
> quando estivesse construindo aplicações web, e achei que vocês podiam
>  me ajudar a tornar mais fácil esse trabalho inicial.
> 
> A idéia é de criar um pequeno script que recebece as requisições de 
> formulários em um site e redirecionasse para classes de um package 
> específico. Por exemplo:
> 
> <form action="/action/EnviarMensagem"> <input type="text"
> name="nome"/> <input type="text" name="mensagem"/> <input
> type="submit"/> </form>
> 
> A minha intenção é de que esse form fosse processado por um script - 
> action.pl, talvez? - que criasse um objeto dda classe 
> Action::EnviarMensagem, o inicializasse com informações do form, e 
> chamasse um método "processar" dessa classe.

  Muito bem!
  Bem-vindo ao meu mundo, bem-vindo ao mundo da programação com padrões
de projeto... ;-) Isto que você "concebeu", meu caro Veríssimo, é
chamado "Controller" e faz parte de um padrão de projeto chamado
"Model-View-Controller" ou simplesmente MVC (para os íntimos).

  Aqui tem mais uma casquinha sobre isso:

  http://en.wikipedia.org/wiki/Model-view-controller

  Espero que o seu inglês esteja razoável. ;-)

> Dessa maneira, bastaria, para tratar um formulário, criar uma classe 
> dentro do diretório da package Action.
> 
> Eu acabei de pensar nisso, mas acho que já deu pra levantar umas 
> dúvidas.

> 1) Colocando action="/action/EnviarMensagem", o Apache vai
> tentar chamar um script /action/EnviarMensagem. O servidor deveria
> chamar o script /action. Há alguma maneira de fazer isso sem ter que
> mexer na configuração do Apache?

  Bom, acho que basta zelar para que não exista um diretório chamado
"action", mas sim um script CGI chamado "action". Desta forma, o
restante do caminho vai ser enviado como parâmetro para o script. Eu
apenas não me lembro da variável de ambiente por onde o apache passa
isso, mas é um "*PATH*" da vida.

> 2) Qual é a maneira mais simples de
> transformar diretamente os campos do formulários como se fossem
> membros da classe, sem ter que declará-los?

  Eu acredito que a melhor forma de se fazer isto é mesmo extender as
classes de parsing que fazem o trabalho de trazer coisas do ambiente
para dentro do seu programa, e fazer com que elas façam o trabalho.

> 3) Já há algum framework
> que trabalhe de maneira simples assim?

  www.catalystframework.org

> É isso, monges! Agradeço desde já pelas opiniões que enviarem!

  Aqui tem as minhas.
  Putamplexos!

-- 
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
 Luis Motta Campos is Software Engineer, Oracle OCP/DBA, Un*x
 Sysadmin, Member of {Lisbon,São Paulo,Cascavel,Brasil,London}
 Perl Mongers and Perl Fanatic Evangelist
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=


Mais detalhes sobre a lista de discussão SaoPaulo-pm