---
name: "HTML::FormFu::Validator"
section: "3pm"
platform: "linux"
package: "libhtml-formfu-perl"
version: "2.07000-2"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/HTML::FormFu::Validator"
---

# HTML::FormFu::Validator(3pm)

Validator Base Class

## NAME

HTML::FormFu::Validator - Validator Base Class

## VERSION

version 2.07

## SYNOPSIS

## DESCRIPTION

## METHODS

## CORE VALIDATORS

- HTML::FormFu::Validator::Callback

  ## BEST PRACTICES

Try to avoid using callbacks if possible. Below is a more maintainable and reusable approach, which also keeps the code out of the controller.

A normal application's directory would contain:

```
    lib/HTML/FormFu/Constraint/MyApp/
    lib/HTML/FormFu/Validator/MyApp/
    lib/HTML/FormFu/Plugin/MyApp/
    etc.
```

Then, the form config file would just need:

```
    validator: 'MyApp::SomeValidator'
```

And the class would be something like this:

```
    package HTML::FormFu::Validator::MyApp::SomeValidator;
    use Moose;
    extends 'HTML::FormFu::Validator';
    sub validate_value {
        my ( $self, $value, $params ) = @_;
        my $c = $self->form->stash->{context};
        return 1 if $c->model('DBIC')->is_valid($value);
        # assuming you want to return a custom error message
        # which perhaps includes something retrieved from the model
        # otherwise, just return 0
        die HTML::FormFu::Exception::Validator->new({
            message => 'custom error message',
        });
    }
    1;
```

## AUTHOR

Carl Franks, `"cfranks@cpan.org"`

## LICENSE

This library is free software, you can redistribute it and/or modify it under the same terms as Perl itself.

## AUTHOR

Carl Franks \<cpan@fireartist.com\>

## COPYRIGHT AND LICENSE

This software is copyright (c) 2018 by Carl Franks.

This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.
