The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

NAME

DBIx::Class::Validation - Validate all data before submitting to your database.

SYNOPSIS

In your base DBIC package:

  __PACKAGE__->load_components(qw/... Validation/);

And in your subclasses:

  __PACKAGE__->validation(
    module => 'FormValidator::Simple',
    profile => { ... },
    auto => 1,
  );

And then somewhere else:

  eval{ $obj->validate() };
  if( my $results = $EVAL_ERROR ){
    ...
  }

METHODS

validation

  __PACKAGE__->validation(
    module => 'FormValidator::Simple',
    profile => { ... },
    auto => 1,
  );

Calls validation_module(), validation_profile(), and validation_auto() if the corresponding argument is defined.

validation_module

  __PACKAGE__->validation_module('Data::FormValidator');

Sets the validation module to use. Any module that supports a check() method just like Data::FormValidator's can be used here, such as FormValidator::Simple.

Defaults to FormValidator::Simple.

validation_profile

  __PACKAGE__->validation_profile(
    { ... }
  );

Sets the profile that will be passed to the validation module.

validation_auto

  __PACKAGE__->validation_auto( 1 );

This flag, when enabled, causes any updates or inserts of the class to call validate() before actually executing.

validate

  $obj->validate();

Validates all the data in the object against the pre-defined validation module and profile. If there is a problem then a hard error will be thrown. If you put the validation in an eval you can capture whatever the module's check() method returned.

auto_validate

  __PACKAGE__->auto_validate( 0 );

Turns on and off auto-validation. This feature makes all UPDATEs and INSERTs call the validate() method before doing anything. The default is for auto-validation to be on.

Defaults to on.

AUTHOR

Aran C. Deltac <bluefeet@cpan.org>

LICENSE

You may distribute this code under the same terms as Perl itself.