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

Build Status codecov

NAME

MooseX::Role::Validatable - Role to add validation to a class

SYNOPSIS

package MyClass;

use Moose;
with 'MooseX::Role::Validatable';

has 'attr1' => (is => 'ro', lazy_build => 1);

sub _build_attr1 {
    my $self = shift;

    # Note initialization errors
    $self->add_errors( {
        message => 'Error: blabla',
        message_to_client => 'Something is wrong!'
    } ) if 'blabla';
}

sub _validate_some_other_errors { # _validate_*
    my $self = shift;

    my @errors;
    push @errors, {
        message => '...',
        message_to_client => '...',
    };

    return @errors;
}

## use
my $ex = MyClass->new();

if (not $ex->initialized_correctly) {
    my @errors = $ex->all_init_errors();
    ...;    # We didn't even start with good data.
}

if (not $ex->confirm_validity) { # does not pass those _validate_*
    my @errors = $ex->all_errors();
    ...;
}

DESCRIPTION

MooseX::Role::Validatable is a Moo/Moose role which provides a standard way to add validation to a class.

METHODS

initialized_correctly

no error when init the object (no add_errors is called)

add_errors

$self->add_errors(...)

add errors on those lazy attributes or sub BUILD

confirm_validity

run all those _validate_* messages and returns true if no error found.

all_errors

An array of the errors currently noted. combined with all_init_errors and all_validation_errors

all errors including below methods are instance of error_class, default to MooseX::Role::Validatable::Error

all_init_errors

all errors on init

all_validation_errors

all errors on validation

all_errors_by_severity

order by severity

primary_validation_error

the first error of all_errors_by_severity

validation_methods

A list of all validation methods available on this object. This can be auto-generated from all methods which begin with "_validate_" which is especially helpful in devleoping new validations.

You may wish to set this list directly on the object, if you create and validate a lot of static objects.

error_class

default to MooseX::Role::Validatable::Error, override by

has '+error_class' => (is => 'ro', default => sub { 'My::Validatable::Error' });

# or
->new(error_class => 'My::Validatable::Error');

AUTHOR

Binary.com fayland@binary.com

COPYRIGHT

Copyright 2014- Binary.com

LICENSE

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

SEE ALSO