Wallace, <div><br></div><div>Eu não consegui entender este Data::Manger. Não entendi como utilizar este cara verificar os inputs, ao invés de ficar fazer 'if'. O cara parece ser interessante, mas eu fiquei boiando.</div>

<div><br></div><div>Solli Honorio</div><div><br><div class="gmail_quote">2012/6/8 Wallace Reis <span dir="ltr"><<a href="mailto:wallace@reis.me" target="_blank">wallace@reis.me</a>></span><br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">

On Jun 08, 2012, at 10:29 AM, Eden Cardim wrote:<br>
> [corte]<br>
<div class="im">> E o seu lean controller ficaria mais ou menos assim:<br>
><br>
> sub my_action :Local {<br>
>  my($self, $c) = @_;<br>
>  $c->model('MyBizClass')<br>
>    ->handle($c->req->upload('file')->fh, $c->model('DB')->dbh, $c->user->email);<br>
> }<br>
<br>
<br>
</div>Para validação de dados, tenho usado o Data::Verifier[1] atráves do Data::Manager[2] e este através do CatalystX::Controller::Verifier[3]. O Data::Verifier permite realizar isto com apoio do sistema de tipos do Moose[4] e com algumas extensões para validações mais complexas como no seu caso em que você precisa verificar que é um arquivo de imagem.<br>


<br>
Assim, o controller ficaria algo como (YMMV):<br>
<br>
__PACKAGE__->config(<br>
  verifiers => {<br>
    my_action => {<br>
      profile => {<br>
        image_file => {<br>
          required => 1,<br>
          type => 'FileHandle',<br>
          post_check => sub { isa_image_file(shift->get_value('image_file')) }<br>
        },<br>
      },<br>
    },<br>
  },<br>
);<br>
<div class="im"><br>
sub my_action :Local {<br>
  my($self, $c) = @_;<br>
</div>  my $results = $self->verify($c);<br>
  $c->model('MyBizClass')<br>
    ->handle($results->get_value('image_file'), $c->model('DB')->dbh, $c->user->email);<br>
}<br>
<br>
[1] <a href="https://metacpan.org/module/Data::Verifier" target="_blank">https://metacpan.org/module/Data::Verifier</a><br>
[2] <a href="https://metacpan.org/module/Data::Manager" target="_blank">https://metacpan.org/module/Data::Manager</a><br>
[3] <a href="https://metacpan.org/module/CatalystX::Controller::Verifier" target="_blank">https://metacpan.org/module/CatalystX::Controller::Verifier</a><br>
[4] <a href="https://metacpan.org/module/Moose::Util::TypeConstraints" target="_blank">https://metacpan.org/module/Moose::Util::TypeConstraints</a><br>
<br>
--<br>
Wallace Reis | wreis<br>
<a href="mailto:wallace@reis.me">wallace@reis.me</a><br>
<a href="http://www.about.me/wallacereis" target="_blank">http://www.about.me/wallacereis</a><br>
<div class="HOEnZb"><div class="h5"><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>
</div></div></blockquote></div><br><br clear="all"><div><br></div>-- <br>"o animal satisfeito dorme". - Guimarães Rosa<br>
</div>