Geovanny, eu fiz um exemplo utilizando Data::Manager, Data::Verifier, 
Plugin::Message  e I18N com Catalyst, dê uma olhada, acho que te atende.

https://github.com/luma777/catalyst-data-manager-i18n


Em 12/02/2014, à(s) 17:42, Geovanny Junio :: eutsiv <[email protected]> 
escreveu:

> Renato,
> 
> Eu vi o $obj->make_status_message_get_set_methods_for_type, mas por estar 
> marcado como interno, preferi não usar essa abordagem.
> 
> Eu coloquei a opção do stash pois com um único método "c->sm_get()" eu 
> capturo mensagens via session ou via stash, usando o FOREACH no Template eu 
> posso empilhar todas as mensagens que tiver, só perfumaria mesmo.
> 
> Grato,
> --
> Geovanny Junio
> Consultor de Tecnologia
> geovanny (at) eutsiv.com
> +55 31 9422-8885
> +55 31 2519-8603
> www.eutsiv.com
> 
> Este e-mail pode conter informação privilegiada e confidencial. Se você não é 
> destinatário da
> mensagem, por favor apague a mensagem e comunique-nos o fato de imediato.
> 
> This e-mail contains information that may be
> privileged and confidential. If you are not the intended recipient, please
> delete the e-mail and notify us immediately.
> 
> 
> 2014-02-12 17:31 GMT-02:00 Renato Santos <[email protected]>:
> Opa,
> 
> legal, está com exemplos e tudo!
> 
> Eu não entendi direito o motivo de precisar usar o modulo no caso de colocar 
> a mensagem na stash, já que daria pra fazer isso com só um push 
> @{$c->stash->{qualquercoisa}}, { msg, type }, ...;
> 
> mas, eu gostaria de avisar que, o StatusMessage consegue salvar qualquer tipo 
> de mensagem, desde que o Session::Store consiga gravar, mas pra criar outro 
> container, tem que chamar 
> $obj->make_status_message_get_set_methods_for_type('warnings'), mas eu uso 
> isso, podia ser melhor (ficar na config e ser lazy)
> 
> Mas, o que eu geralmente uso é, duas rotinas, uma de sucesso e outra de erro, 
> pois geralmente ou é um aviso de formulário inválido, ou de sucesso.
> 
> package APP::Controller::Form;
> 
> http://pastebin.com/BHuL62DL =>
> sub redirect_error : Private {
>     my ( $self, $c, %args ) = @_;
>  
>     my $host  = $c->req->uri->host;
>     my $refer = $c->req->headers->referer;
>  
>     if ( !$refer || $refer !~ /^http:\/\/$host/) {
>         $refer = $c->uri_for('/');
>     }
>     my $mid = $c->set_error_msg(
>         {
>             #%args,
>             form_error => $c->stash->{form_error},
>             body       => $c->req->params,
>             error_msg  => $c->stash->{error},
>         }
>     );
>  
>     my $uri = URI->new($refer);
>     $uri->query_param( 'mid', $mid );
>  
>     $c->res->redirect( $uri->as_string );
>  
> }
> http://pastebin.com/DSFezCtM =>
> sub redirect_ok : Private {
>     my ( $self, $c, $path, $cap, $params, $msg, %args ) = @_;
>  
>     my $a = $c->uri_for_action(
>         $path, $cap,
>         {
>             ( ref $params eq 'HASH' ? %$params : () ),
>             mid => $c->set_status_msg(
>                 {
>                     %args, status_msg => $msg
>                 }
>             )
>         }
>     );
>     die "uri not found" unless $a;
>  
>     $c->res->redirect($a);
>  
> }
> 
> ai se deu tudo certo, 
> 
> $c->detach( '/form/redirect_ok', [ '/user/dashboard/index', {}, 'Bem vindo, ' 
> . $c->user->name ] );
> 
> 
> Ai acontece, que para mostrar a mensagem de erro nas minhas templates, eu já 
> tenho na stash o erro no formato que preciso.
> 
>         $c->stash->{error}      = $res->{error};
>         $c->stash->{form_error} = $res->{form_error};
> 
>         $c->detach( '/form/redirect_error', [] );
> 
> veja que eu salvo o c->req->params também, assim eu recarrego o form mesmo 
> com o método POST.
> 
> no metodo que é base para toda a aplicação, eu faço isso para carregar as msg:
> 
> 
>     $c->load_status_msgs;
>     my $status_msg = $c->stash->{status_msg};
>     my $error_msg  = $c->stash->{error_msg};
> 
>     @{ $c->stash }{ keys %$status_msg } = values %$status_msg if ref 
> $status_msg eq 'HASH';
>     @{ $c->stash }{ keys %$error_msg }  = values %$error_msg  if ref 
> $error_msg eq 'HASH';
> 
> 
> Como eu uso TT com bootstrap 3, eu tenho algumas macros:
> 
> http://pastebin.com/AhnxXwME
> 
> mas não suportam todos os componentes do boostrap e etc, mas vou sempre 
> atualizando isso conforme a necessidade
> 
> 
> 
> 
> 
> 2014-02-12 17:14 GMT-02:00 Geovanny Junio :: eutsiv <[email protected]>:
> Olá, tudo bem?
> 
> Eu estava precisando de uma solução para passar mensagens de status no 
> Catalyst, via stash somente não atendia, e flash também não era o ideal.
> 
> Então encontrei o Catalyst::Plugin::StatusMessage que me atendia em parte, 
> mas só possui 2 tipos de mensagens (error e status), e eu queria a 
> flexibilidade de usar os tipos de mensagem que quiser. Outra coisa que também 
> precisava era enviar mensagens via stash, em alguns casos é necessário.
> 
> Então criei um módulo para passar mensagens via session igual o 
> C::P::StatusMessage já faz, e também via stash, além de permitir informar o 
> tipo de mensagem que eu quiser.
> 
> https://metacpan.org/pod/Catalyst::Plugin::SimpleMessage
> 
> Grato,
> --
> Geovanny Junio
> Consultor de Tecnologia
> geovanny (at) eutsiv.com
> +55 31 9422-8885
> +55 31 2519-8603
> www.eutsiv.com
> 
> Este e-mail pode conter informação privilegiada e confidencial. Se você não é 
> destinatário da
> mensagem, por favor apague a mensagem e comunique-nos o fato de imediato.
> 
> This e-mail contains information that may be
> privileged and confidential. If you are not the intended recipient, please
> delete the e-mail and notify us immediately.
> 
> =begin disclaimer
>    Sao Paulo Perl Mongers: http://sao-paulo.pm.org/
>  SaoPaulo-pm mailing list: [email protected]
>  L<http://mail.pm.org/mailman/listinfo/saopaulo-pm>
> =end disclaimer
> 
> 
> 
> 
> -- 
> Saravá,
> Renato CRON
> http://www.renatocron.com/blog/
> @renato_cron
> 
> =begin disclaimer
>    Sao Paulo Perl Mongers: http://sao-paulo.pm.org/
>  SaoPaulo-pm mailing list: [email protected]
>  L<http://mail.pm.org/mailman/listinfo/saopaulo-pm>
> =end disclaimer
> 
> 
> =begin disclaimer
>   Sao Paulo Perl Mongers: http://sao-paulo.pm.org/
> SaoPaulo-pm mailing list: [email protected]
> L<http://mail.pm.org/mailman/listinfo/saopaulo-pm>
> =end disclaimer

=begin disclaimer
   Sao Paulo Perl Mongers: http://sao-paulo.pm.org/
 SaoPaulo-pm mailing list: [email protected]
 L<http://mail.pm.org/mailman/listinfo/saopaulo-pm>
=end disclaimer

Responder a