=head1 NAME Mojolicious::Plugin::Validate::Tiny - Lightweight validator for Mojolicious =head1 SEE This plugin is a copy of L, with the intent to have a plugin that it's maintained =head1 SYNOPSIS # Mojolicious $self->plugin('Validate::Tiny'); # Mojolicious::Lite plugin 'Validate::Tiny'; sub action { my $self = shift; my $validate_rules = [ # All of these are required [qw/name email pass pass2/] => is_required(), # pass2 must be equal to pass pass2 => is_equal('pass'), # custom sub validates an email address email => sub { my ( $value, $params ) = @_; Email::Valid->address($value) ? undef : 'Invalid email'; } ]; return unless $self->do_validation($validate_rules); ... Do something ... } sub action2 { my $self = shift; my $validate_rules = { checks => [...], fields => [...], filters => [...] }; if ( my $filtered_params = $self->do_validation($validate_rules) ) { # all $params are validated and filters are applyed ... do your action ... } else { my $errors = $self->validator_error; # hash with errors my $pass_error = $self->validator_error('password'); # password error text my $any_error = $self->validator_any_error; # any error text $self->render( status => '403', text => $any_error ); } } __DATA__ @@ user.html.ep %= if (validator_has_errors) {
Please, correct the errors below.
% } %= form_for 'user' => begin
<%= input_tag 'username' %>
<%= validator_error 'username' %>
<%= submit_button %> % end =head1 DESCRIPTION L is a L support for L. =head1 OPTIONS =head2 C (default 0) If "explicit" is true then for every field must be provided check rule =head2 C (default 1) If "autofields" then validator will automatically create fields list based on passed checks. So, you can pass: [ user => is_required(), pass => is_required(), ] instead of { fields => ['user', 'pass'], checks => [ user => is_required(), pass => is_required(), ] } =head2 C (default []) Is an arrayref with a list of fields that will be never checked. For example, if you use "Mojolicious::Plugin::CSRFProtect" then you should add "csrftoken" to exclude list. =head1 HELPERS =head2 C Validates parameters with provided rules and automatically set errors. $VALIDATE_RULES - Validate::Tiny rules in next form { checks => $CHECKS, # Required fields => [], # Optional (will check all GET+POST parameters) filters => [], # Optional } You can pass only "checks" arrayref to "do_validation". In this case validator will take all GET+POST parameters as "fields" returns false if validation failed returns true if validation succeded $self->do_validation($VALIDATE_RULES) $self->do_validation($CHECKS); =head2 C Check if there are any errors. if ($self->validator_has_errors) { $self->render_text( $self->validator_any_error ); } %= if (validator_has_errors) {
Please, correct the errors below.
% } =head2 C Returns the appropriate error. my $errors_hash = $self->validator_error(); my $username_error = $self->validator_error('username'); <%= validator_error 'username' %> =head2 C Returns a string with all errors (an empty string in case of no errors). Helper maps directly to Validate::Tiny::error_string method ( see L ) my $error_str = $self->validator_error_string(); <%= validator_error_string %> =head2 C Returns any of the existing errors. This method is usefull if you want return only one error. =head1 AUTHOR Viktor Turskyi and this copy is maintained by Adrian Crisan =head1 BUGS Please report any bugs or feature requests to Github L =head1 SEE ALSO L, L, L, L =cut