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