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>