MojoX-Validator

 view release on metacpan or  search on metacpan

README.pod  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;

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) {

t/plugin.t  view on Meta::CPAN


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');

t/plugin.t  view on Meta::CPAN

    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 )