Hi, Horsey!
I don't sure that is the best practic, but I do it like this:
In controller I have:
sub some_route {
my $s = shift;
my $userid = $s->session('userid'); # for example
my $valid = $s->_validate_it('order_form');
if ($valid->has_error) {
# render json or somethink that you want,
$s->render(json => {message => "No data: " . @{$valid->failed}[0], type => 'alert-info'});# Error!
} else {
#
my $vars = $valid->output;
$s->render(); # OK!
}
}
I have method _validate_it() , that is a helper and it look like this:
$app->helper( _validate_it => sub {
my ($self, $form) = @_;
my $v = $self->validation;
my $out = $VALIDATORS{$form}($v);
return $out;
}
);
Hash %VALIDATORS look like this:
my %VALIDATORS = (
order_form=> \&_validation_order_form,
other_form=> \&_validation_other_form,
);
In this hash I have a link to validation subs (per one sub on form)
where _validation_order_form is a sub like this:
sub _validation_order_form {
my $v = shift;
$v->optional('order_id')->like(qr/^[0-9]+/);
$v->optional('userid')->like(qr/^[0-9]+/);#
$v->required('delivery')->in('EXW','CIF','FOB');
$v->required('temp_id')->like(qr/^[0-9]+/);
$v->optional('comment');
say for @{$v->failed};
return $v;
}
Helper _validate_it is useful for validating many forms by name, and linking validation sub with nedded form
понедельник, 23 мая 2016 г., 14:33:48 UTC+3 пользователь Bad Horsey написал: