Mojolicious::Validator::Validation(3)
NAME
Mojolicious::Validator::Validation - Perform validations
SYNOPSIS
use Mojolicious::Validator;
use Mojolicious::Validator::Validation;
my $validator = Mojolicious::Validator->new;
my $v = Mojolicious::Validator::Validation->new(validator => $validator);
$v->input({foo => 'bar'});
$v->required('foo')->in('bar', 'baz');
say $v->param('foo');
DESCRIPTION
Mojolicious::Validator::Validation performs Mojolicious::Validator
validation checks.
ATTRIBUTES
Mojolicious::Validator::Validation implements the following attributes.
csrf_token
my $token = $v->csrf_token;
$v = $v->csrf_token('fa6a08...');
CSRF token.
input
my $input = $v->input;
$v = $v->input({foo => 'bar', baz => [123, 'yada']});
Data to be validated.
output
my $output = $v->output;
$v = $v->output({foo => 'bar', baz => [123, 'yada']});
Validated data.
topic
my $topic = $v->topic;
$v = $v->topic('foo');
Name of field currently being validated.
validator
my $v = $v->validator;
$v = $v->validator(Mojolicious::Validator->new);
Mojolicious::Validator object this validation belongs to.
METHODS
Mojolicious::Validator::Validation inherits all methods from Mojo::Base
and implements the following new ones.
check
$v = $v->check('size', 2, 7);
Perform validation check on all values of the current "topic", no more
checks will be performed on them after the first one failed. All checks
from "CHECKS" in Mojolicious::Validator are supported.
csrf_protect
$v = $v->csrf_protect;
Validate "csrf_token" and protect from cross-site request forgery.
error
my $err = $v->error('foo');
$v = $v->error(foo => ['custom_check']);
$v = $v->error(foo => [$check, $result, @args]);
Get or set details for failed validation check, at any given time there
can only be one per field.
# Details about failed validation
my ($check, $result, @args) = @{$v->error('foo')};
# Force validation to fail for a field without performing a check
$v->error(foo => ['some_made_up_check_name']);
every_param
my $values = $v->every_param;
my $values = $v->every_param('foo');
Similar to "param", but returns all values sharing the same name as an
array reference.
# Get first value
my $first = $v->every_param('foo')->[0];
failed
my $names = $v->failed;
Return an array reference with all names for values that failed
validation.
# Names of all values that failed
say for @{$v->failed};
has_data
my $bool = $v->has_data;
Check if "input" is available for validation.
has_error
my $bool = $v->has_error;
my $bool = $v->has_error('foo');
Check if validation resulted in errors, defaults to checking all
fields.
is_valid
my $bool = $v->is_valid;
my $bool = $v->is_valid('foo');
Check if validation was successful and field has a value, defaults to
checking the current "topic".
optional
$v = $v->optional('foo');
$v = $v->optional('foo', @filters);
Change validation "topic" and apply filters. All filters from "FILTERS"
in Mojolicious::Validator are supported.
# Trim value and check size
$v->optional('user', 'trim')->size(1, 15);
param
my $value = $v->param;
my $value = $v->param('foo');
Access validated values, defaults to the current "topic". If there are
multiple values sharing the same name, and you want to access more than
just the last one, you can use "every_param".
# Get value right away
my $user = $v->optional('user')->size(1, 15)->param;
passed
my $names = $v->passed;
Return an array reference with all names for values that passed
validation.
# Names of all values that passed
say for @{$v->passed};
required
$v = $v->required('foo');
$v = $v->required('foo', @filters);
Change validation "topic", apply filters, and make sure a value is
present. All filters from "FILTERS" in Mojolicious::Validator are
supported.
# Trim value and check size
$v->required('user', 'trim')->size(1, 15);
CHECKS
In addition to the "ATTRIBUTES" and "METHODS" above, you can also call
validation checks provided by "validator" on
Mojolicious::Validator::Validation objects, similar to "check".
# Call validation checks
$v->required('foo')->size(2, 5)->like(qr/^[A-Z]/);
$v->optional('bar')->equal_to('foo');
$v->optional('baz')->in('test', '123');
# Longer version
$v->required('foo')->check('size', 2, 5)->check('like', qr/^[A-Z]/);
SEE ALSO
Mojolicious(3), Mojolicious::Guides(3), <https://mojolicious.org>.
perl v5.32.1 2021-12Mojolicious::Validator::Validation(3)
mojolicious 9.260.0 - Generated Mon May 30 07:34:31 CDT 2022
