---
name: "Mojolicious::Validator"
section: "3pm"
platform: "linux"
package: "libmojolicious-perl"
version: "9.39+dfsg-1"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/Mojolicious::Validator"
---

# Mojolicious::Validator(3pm)

Validate values

## NAME

Mojolicious::Validator - Validate values

## SYNOPSIS

```
  use Mojolicious::Validator;
  my $validator = Mojolicious::Validator->new;
  my $v = $validator->validation;
  $v->input({foo => 'bar'});
  $v->required('foo')->like(qr/ar$/);
  say $v->param('foo');
```

## DESCRIPTION

Mojolicious::Validator validates values for Mojolicious.

## CHECKS

These validation checks are available by default.

### equal\_to

```
  $v = $v->equal_to('foo');
```

String value needs to be equal to the value of another field.

### in

```
  $v = $v->in('foo', 'bar', 'baz');
```

String value needs to match one of the values in the list.

### like

```
  $v = $v->like(qr/^[A-Z]/);
```

String value needs to match the regular expression.

### num

```
  $v = $v->num;
  $v = $v->num(2, 5);
  $v = $v->num(-3, 7);
  $v = $v->num(2, undef);
  $v = $v->num(undef, 5);
```

String value needs to be a non-fractional number (positive or negative) and if provided in the given range.

### size

```
  $v = $v->size(2, 5);
  $v = $v->size(2, undef);
  $v = $v->size(undef, 5);
```

String value length or size of Mojo::Upload object in bytes needs to be between these two values.

### upload

```
  $v = $v->upload;
```

Value needs to be a Mojo::Upload object, representing a file upload.

## FILTERS

These filters are available by default.

### comma\_separated

```
  $v = $v->optional('foo', 'comma_separated');
```

Split string of comma separated values into separate values.

### not\_empty

```
  $v = $v->optional('foo', 'not_empty');
```

Remove empty string values and treat them as if they had not been submitted.

### trim

```
  $v = $v->optional('foo', 'trim');
```

Trim whitespace characters from both ends of string value with "trim" in Mojo::Util.

## ATTRIBUTES

Mojolicious::Validator implements the following attributes.

### checks

```
  my $checks = $validator->checks;
  $validator = $validator->checks({size => sub ($v, $name, $value, @args) {...}});
```

Registered validation checks, by default only "equal\_to", "in", "like", "num", "size" and "upload" are already defined.

### filters

```
  my $filters = $validator->filters;
  $validator  = $validator->filters({trim => sub {...}});
```

Registered filters, by default only "comma\_separated", "not\_empty" and "trim" are already defined.

## METHODS

Mojolicious::Validator inherits all methods from Mojo::Base and implements the following new ones.

### add\_check

```
  $validator = $validator->add_check(size => sub ($v, $name, $value, @args) {...});
```

Register a validation check.

```
  $validator->add_check(foo => sub ($v, $name, $value, @args) {
    ...
    return undef;
  });
```

### add\_filter

```
  $validator = $validator->add_filter(trim => sub ($v, $name, $value) {...});
```

Register a new filter.

```
  $validator->add_filter(foo => sub ($v, $name, $value) {
    ...
    return $value;
  });
```

### new

```
  my $validator = Mojolicious::Validator->new;
```

Construct a new Mojolicious::Validator object.

### validation

```
  my $v = $validator->validation;
```

Build Mojolicious::Validator::Validation object to perform validations.

```
  my $v = $validator->validation;
  $v->input({foo => 'bar'});
  $v->required('foo')->size(1, 5);
  say $v->param('foo');
```

## SEE ALSO

Mojolicious, Mojolicious::Guides, \<https://mojolicious.org\>.
