[Cascavel-pm] Ajuda com Catalyst e callback do HTML::FormFu

Nilson Santos Figueiredo Jr. acid06 em gmail.com
Quinta Abril 23 11:55:16 PDT 2009


2009/4/22 Jorge Augusto Senger <jasenger em gmail.com>:
> No mesmo Controller que processa o formulário (auth.pm) criei um método para
> ser usado pelo callback (verificaLogin).
> Minha idéia para este método é conectar ao banco e verificar se existe
> usuário cadastrado com o login informado no formulário. Gostaria de saber se
> é possível este método acessar o objeto de contexto da aplicação para
> realizar a busca no banco.
> Pelo que li na documentação do HTML::FormFu, o callback chama uma subrotina
> e não um método, seria esse meu problema?

Eu não sei muito sobre o HTML::FormFu, apesar de já tê-lo utilizá-lo.
Pra ser sincero, isso nem é um bom conselho, mas eu normalmente me
sinto "desconfortável" usando essas bibliotecas que auxiliam na
validação de formulários (mas, de fato, é muito mais fácil manter
código dos outros que foi escrita utilizando-as, por isso é uma boa
prática utilizá-las).

Enfim, uma maneira de fazer isso seria, ao invés de especificar a
callback no arquivo de configuração, adicionar a constraint ao
formulário depois.

Lá no seu controller, aonde a validação vai ocorrer, faça algo assim:

  sub my_action : Local FormConfig {
    my ( $self, $c ) = @_;
    my $form = $c->form;
    my $field = $form->get_field( { name => 'login' } );
    $field->constraint( {
        type => 'Callback',
        callback => sub {
            $c->forward( '/auth/verifica_login', [ @_ ] );
        }
    });
    $form->process;

    # seu código continua aqui

  }

Talvez exista uma solução melhor... mas eu sinceramente não sei.
Apesar de não ter testado, esta solução deve funcionar pro seu caso
(excluindo algum erro de compilação).

-Nilson Santos F. Jr.


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