On Jun 08, 2012, at 10:29 AM, Eden Cardim wrote:
> [corte]
> E o seu lean controller ficaria mais ou menos assim:
>
> sub my_action :Local {
> my($self, $c) = @_;
> $c->model('MyBizClass')
> ->handle($c->req->upload('file')->fh, $c->model('DB')->dbh,
> $c->user->email);
> }
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.
Assim, o controller ficaria algo como (YMMV):
__PACKAGE__->config(
verifiers => {
my_action => {
profile => {
image_file => {
required => 1,
type => 'FileHandle',
post_check => sub { isa_image_file(shift->get_value('image_file')) }
},
},
},
},
);
sub my_action :Local {
my($self, $c) = @_;
my $results = $self->verify($c);
$c->model('MyBizClass')
->handle($results->get_value('image_file'), $c->model('DB')->dbh,
$c->user->email);
}
[1] https://metacpan.org/module/Data::Verifier
[2] https://metacpan.org/module/Data::Manager
[3] https://metacpan.org/module/CatalystX::Controller::Verifier
[4] https://metacpan.org/module/Moose::Util::TypeConstraints
--
Wallace Reis | wreis
[email protected]
http://www.about.me/wallacereis
=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