Mojolic...idation(3)

πŸ’… Mojolic...idation(3) β€” Mojolicious::Validator::Validation πŸ’…

okay so this is the User Contributed Perl Documentation page for Mojolic...idation(3), and it's highkey all about Mojolicious::Validator::Validation, the class that performs Mojolicious::Validator validation checks. bestie, every attribute, method, check, example, and SEE ALSO reference is here β€” no skips, no cap, periodt. πŸ’–

🌸 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. that's the whole vibe: it's the object doing the validating, and it's lowkey iconic. obsessed. πŸ’…

πŸŽ€ ATTRIBUTES πŸŽ€

Mojolicious::Validator::Validation implements the following attributes. yes bestie, these are the little knobs you can get and set.

🌟 csrf_token

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

CSRF token. literally the CSRF token, no cap. πŸ”

🌟 input

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

Data to be validated. this is the raw stuff going into the vibe check.

🌟 output

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

Validated data. the stuff that made it through, slay. ✨

🌟 topic

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

Name of field currently being validated. it's giving "main character field energy." 🎯

🌟 validator

my $v = $v->validator;
$v    = $v->validator(Mojolicious::Validator->new);

Mojolicious::Validator object this validation belongs to. iykyk. 🫢

πŸ’… METHODS πŸ’…

Mojolicious::Validator::Validation inherits all methods from Mojo::Base and implements the following new ones. okay so here's where it gets good.

πŸ”₯ 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. one fail and the rest are like "ok bestie, we're done here." πŸ’€

πŸ”₯ csrf_protect

$v = $v->csrf_protect;

Validate "csrf_token" and protect from cross-site request forgery. Tokens are masked with a random value to protect against BREACH attacks. security slay. πŸ›‘οΈ

πŸ”₯ 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.

one failed-check detail per field, max β€” that's the rule, bestie. 🚨
# 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. quick vibe check on the input. βœ…

πŸ”₯ 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". this is the part where the syntax gets all cute and chainy, bestie. πŸ’…

# 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>.


πŸ’– and that's the whole manual, bestie! source/version: perl v5.42.0; date: 2026-07-15; footer manual name: Mojolic...idation(3). slay. 🫢

πŸ“¦ where this page comes from