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');
my $token = $v->csrf_token; $v = $v->csrf_token('fa6a08...');
my $input = $v->input; $v = $v->input({foo => 'bar', baz => [123, 'yada']});
my $output = $v->output; $v = $v->output({foo => 'bar', baz => [123, 'yada']});
my $topic = $v->topic; $v = $v->topic('foo');
Name of field currently being validated.
my $v = $v->validator; $v = $v->validator(Mojolicious::Validator->new);
Mojolicious::Validator object this validation belongs to.
$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.
$v = $v->csrf_protect;
Validate "csrf_token" and protect from cross-site request forgery.
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']);
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];
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};
my $bool = $v->has_data;
Check if ``input'' is available for validation.
my $bool = $v->has_error; my $bool = $v->has_error('foo');
Check if validation resulted in errors, defaults to checking all fields.
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''.
$v = $v->optional('foo'); $v = $v->optional('foo', 'filter1', 'filter2');
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);
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;
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};
$v = $v->required('foo'); $v = $v->required('foo', 'filter1', 'filter2');
Change validation ``topic'', apply filters, and make sure a value is present and not an empty string. All filters from ``FILTERS'' in Mojolicious::Validator are supported.
# Trim value and check size $v->required('user', 'trim')->size(1, 15);
# 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]/);