++ed by:
KOORCHIK ZOFFIX AZAWAWI PLU RWSTAUNER

131 PAUSE users
164 non-PAUSE users.

Sebastian Riedel

NAME

Mojolicious::Validator::Validation - Perform validations

SYNOPSIS

  use Mojolicious::Validator;
  use Mojolicious::Validator::Validation;

  my $validator = Mojolicious::Validator->new;
  my $validation
    = Mojolicious::Validator::Validation->new(validator => $validator);
  $validation->input({foo => 'bar'});
  $validation->required('foo')->in('bar', 'baz');
  say $validation->param('foo');

DESCRIPTION

Mojolicious::Validator::Validation performs Mojolicious::Validator validation checks.

ATTRIBUTES

Mojolicious::Validator::Validation implements the following attributes.

csrf_token

  my $token   = $validation->csrf_token;
  $validation = $validation->csrf_token('fa6a08...');

CSRF token.

input

  my $input   = $validation->input;
  $validation = $validation->input({foo => 'bar', baz => [123, 'yada']});

Data to be validated.

output

  my $output  = $validation->output;
  $validation = $validation->output({foo => 'bar', baz => [123, 'yada']});

Validated data.

topic

  my $topic   = $validation->topic;
  $validation = $validation->topic('foo');

Name of field currently being validated.

validator

  my $validator = $validation->validator;
  $validation   = $validation->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

  $validation = $validation->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

  $validation = $validation->csrf_protect;

Validate csrf_token and protect from cross-site request forgery.

error

  my $err     = $validation->error('foo');
  $validation = $validation->error(foo => ['custom_check']);

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) = @{$validation->error('foo')};

every_param

  my $values = $validation->every_param('foo');

Similar to "param", but returns all values sharing the same name as an array reference.

  # Get first value
  my $first = $validation->every_param('foo')->[0];

failed

  my $names = $validation->failed;

Return an array reference with all names for values that failed validation.

  # Names of all values that failed
  say for @{$validation->failed};

has_data

  my $bool = $validation->has_data;

Check if "input" is available for validation.

has_error

  my $bool = $validation->has_error;
  my $bool = $validation->has_error('foo');

Check if validation resulted in errors, defaults to checking all fields.

is_valid

  my $bool = $validation->is_valid;
  my $bool = $validation->is_valid('foo');

Check if validation was successful and field has a value, defaults to checking the current "topic".

optional

  $validation = $validation->optional('foo');
  $validation = $validation->optional('foo', 'filter1', 'filter2');

Change validation "topic" and apply filters. All filters from "FILTERS" in Mojolicious::Validator are supported.

  # Trim value and check size
  $validation->optional('user', 'trim')->size(1, 15);

param

  my $value = $validation->param('foo');

Access validated values. 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".

passed

  my $names = $validation->passed;

Return an array reference with all names for values that passed validation.

  # Names of all values that passed
  say for @{$validation->passed};

required

  $validation = $validation->required('foo');
  $validation = $validation->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.All filters from "FILTERS" in Mojolicious::Validator are supported.

  # Trim value and check size
  $validation->required('user', 'trim')->size(1, 15);

AUTOLOAD

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
  $validation->required('foo')->size(2, 5)->like(qr/^[A-Z]/);
  $validation->optional('bar')->equal_to('foo');
  $validation->optional('baz')->in('test', '123');

  # Longer version
  $validation->required('foo')->check('size', 2, 5)->check('like', qr/^[A-Z]/);

SEE ALSO

Mojolicious, Mojolicious::Guides, http://mojolicious.org.