[SP-pm] Controller thin, model fat ! Como fazê-lo ?
Wallace Reis
wallace at reis.me
Fri Jun 8 13:01:09 PDT 2012
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
wallace em reis.me
http://www.about.me/wallacereis
More information about the SaoPaulo-pm
mailing list