Mojolicious::Validator::Validation

Section: User Contributed Perl Documentation (3)
Updated: 2018-11-22
Page Index
 

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

 

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

 

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, Mojolicious::Guides, <https://mojolicious.org>.


 

Index

NAME
SYNOPSIS
DESCRIPTION
ATTRIBUTES
csrf_token
input
output
topic
validator
METHODS
check
csrf_protect
error
every_param
failed
has_data
has_error
is_valid
optional
param
passed
required
CHECKS
SEE ALSO