The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

NAME

Mojolicious::Plugin::Vparam - Mojolicious plugin validator for GET/POST data.

SYNOPSIS

    # Get one parameter
    my $param1 = $self->vparam('date' => 'datetime');
    # Or more syntax
    my $param2 = $self->vparam('page' => {type => 'int', default => 1});
    # Or more simple syntax
    my $param2 = $self->vparam('page' => 'int', default => 1);

    # Get many parameters
    my %params = $self->vparams(
        # Simple syntax
        name        => 'str',
        password    => qr{^\w{,32}$},
        myparam     => sub {
            my ($self, $param) = @_;
            return ($param eq 'ok') ?1 :0;
        },

        # More syntax
        from        => { type => 'date', default => '' },
        to          => { type => 'date', default => '' },
        id          => { type => 'int' },
        money       => { regexp => qr{^\d+(?:\.\d{2})?$} },
        myparam     => { post => sub {
            my ($self, $param) = @_;
            return ($param eq 'ok') ?1 :0;
        } },
        isa         => { type => 'bool', default => 0 },
    );

    # Same as vparams but auto add some more params for table sorting/paging
    my %filters = $self->vsort(
        -sort       => ['name', 'date', ...],

        ...
    );

    # Get a errors hash by params name
    my %errors = $self->verrors;

DESCRIPTION

This module use simple paramters types str, int, email, bool, etc. to validate. Instead of many other modules you not need add specific validation subs or rules. Just set parameter type. But if you want sub or rule you can do it too.

METHODS

vsort

Method vsort automatically add some keys.

page

Page number $PARAM_PAGE. Default: 1.

oby

Column number for sorting $PARAM_ORDER_BY. Default: 1.

ods

Sort order $PARAM_ORDER_DEST. Default: ASC.

rws

Rows on page

KEYS

You can set a simple mode as in exapmple or full mode. Full mode keys:

default

Default value. Default: undef.

regexp $mojo, $regexp

Valudator regexp by $regexp.

pre $mojo, &sub

Incoming filter sub. Used for primary filtration: string length and trim, etc. Result will be used as new param value.

valid $mojo, &sub

Validation sub. Return 1 if valid, else 0.

post $mojo, &sub

Out filter sub. Used to modify value for use in you program. Usually used to bless in some object. Result will be used as new param value.

type

Parameter type. If set then some filters will be apply.

    int str date time datetime money bool email url phone

After apply all type filters, regexp and post filters will be apply too if set.

RESERVED KEYS

-sort

Arrayref for sort column names. Usually not all columns visible for users and you need convert column numbers in names. This also protect you SQL queries from set too much or too low column number.

date_parse $str

Get a string and return DateTime or undef. Have a hack for parse Russian data and time.

clean_phone $phone, $country, $region

Clear phones. Fix first local digit 8 problem.

Return <undef> if phome not correct

AUTHORS

Dmitry E. Oboukhov <unera@debian.org>, Roman V. Nikolaev <rshadow@rambler.ru>

COPYRIGHT

Copyright (C) 2011 Dmitry E. Oboukhov <unera@debian.org> Copyright (C) 2011 Roman V. Nikolaev <rshadow@rambler.ru>

This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself, either Perl version 5.8.8 or, at your option, any later version of Perl 5 you may have available.