MojoX-Validator
view release on metacpan or search on metacpan
$validator->field([qw/password confirm_password/])
->each(sub { shift->required(1) });
$validator->group('passwords' => [qw/password confirm_password/])->equal;
# Conditions
$validator->field('document');
$validator->field('number');
$validator->when('document')->regexp(qr/^1$/)
->then(sub { shift->field('number')->required(1) });
$validator->validate($values_hashref);
my $errors_hashref = $validator->errors;
my $pass_error = $validator->group('passwords')->error;
my $validated_values_hashref = $validator->values;
lib/MojoX/Validator.pm view on Meta::CPAN
$validator->field([qw/password confirm_password/])
->each(sub { shift->required(1) });
$validator->group('passwords' => [qw/password confirm_password/])->equal;
# Conditions
$validator->field('document');
$validator->field('number');
$validator->when('document')->regexp(qr/^1$/)
->then(sub { shift->field('number')->required(1) });
$validator->validate($values_hashref);
my $errors_hashref = $validator->errors;
my $pass_error = $validator->group('passwords')->error;
my $validated_values_hashref = $validator->values;
=head1 DESCRIPTION
A wrapper around L<Input::Validator>. See original documentation.
=head1 CREDITS
Yaroslav Korshak (yko)
forwardever
lib/Mojolicious/Plugin/Validator.pm view on Meta::CPAN
Carp::croak qq/Can't find validator '$class_name'/ if $e;
Carp::croak qq/Wrong validator '$class_name' isa/
unless $class_name->isa('MojoX::Validator');
return $class_name->new(%$conf, @_);
}
);
$app->helper(
validate => sub {
my $self = shift;
my $validator = shift;
my $params = shift;
$params ||= $self->req->params->to_hash;
return 1 if $validator->validate($params);
$self->stash(validator_errors => $validator->errors);
$self->stash(validator_has_unknown_params =>
$validator->has_unknown_params);
return;
}
);
$app->helper(validator_has_unknown_params =>
lib/Mojolicious/Plugin/Validator.pm view on Meta::CPAN
LENGTH_CONSTRAINT_FAILED => 'Too big'
}
};
sub action {
my $self = shift;
my $validator = $self->create_validator;
$validator->field('username')->required(1)->length(3, 20);
return unless $self->validate($validator);
# Create a user for example
...
}
1;
__DATA__
@@ user.html.ep
% if (validator_has_errors) {
lib/Mojolicious/Plugin/Validator.pm view on Meta::CPAN
$self->create_validator('will-be_decamelized');
$self->create_validator('Custom::Class');
Create a validator from a class derived from L<MojoX::Validator>. This way
preconfigured validators can be used.
=back
=over
=item validate
$self->validate($validator);
Validate parameters with provided validator and automatically set errors.
=back
=over
=item validator_has_errors
% if (validator_has_errors) {
plugin 'validator';
post '/' => sub {
my $self = shift;
my $validator = $self->create_validator;
$validator->field('foo')->required(1)->length(3, 10);
if ($self->validate($validator)) {
return $self->render('ok');
}
} => 'form';
post '/custom' => sub {
my $self = shift;
my $validator = $self->create_validator('Custom');
if ($self->validate($validator)) {
return $self->render('ok');
}
$self->render('form');
} => 'custom';
post '/decamelized' => sub {
my $self = shift;
my $validator = $self->create_validator('decamelized');
if ($self->validate($validator)) {
return $self->render('ok');
}
$self->render('form');
} => 'decamelized';
post '/broken' => sub {
my $self = shift;
$self->create_validator('Broken');
my $self = shift;
$self->create_validator('WrongIsa');
} => 'wrong-isa';
post '/has-unknown-params' => sub {
my $self = shift;
my $validator = $self->create_validator('UnknownParams');
$self->render(template => 'unknown', status => 501) if !$self->validate($validator);
} => 'has-unknown-params';
use Test::Mojo;
my $t = Test::Mojo->new;
#$ENV{MOJO_LOG_LEVEL} = 'debug';
for my $path ('', 'custom', 'decamelized') {
t/validator.t view on Meta::CPAN
use warnings;
use Test::More tests => 2;
use MojoX::Validator;
my $validator = MojoX::Validator->new;
$validator->field('firstname')->required(1);
$validator->field('website')->length(3, 20);
ok($validator->validate({firstname => 'bar', website => 'http://fooo.com'}));
is_deeply($validator->values,
{firstname => 'bar', website => 'http://fooo.com'});
( run in 0.524 second using v1.01-cache-2.11-cpan-a5abf4f5562 )