NAME FormValidator::Lite - lightweight form validation library SYNOPSIS use FormValidator::Lite; FormValidator::Lite->load_constraints(qw/Japanese/); my $q = CGI->new(); my $validator = FormValidator::Lite->new($q); my $res = $validator->check( name => [qw/NOT_NULL/], name_kana => [qw/NOT_NULL KATAKANA/], {mails => [qw/mail1 mail2/]} => ['DUPLICATION'], ); if ( ..... return_true_when_if_error() ..... ) { $validator->set_error('login_id' => 'DUPLICATION'); } if ($validator->has_error) { ... } # in your tmpl DESCRIPTION FormValidator::Lite is simple, fast implementation for form validation. IT'S IN BETA QUALITY. API MAY CHANGE IN FUTURE. HOW TO WRITE YOUR OWN CONSTRAINTS http parameter comes from $_ validator args comes from @_ METHODS my $validator = FormValidator::Lite->new($q); Create a new instance. $q is query like object, such as Apache::Request, CGI.pm, Plack::Request. The object MUST have a "$q->parma" method. $validator->query() $validator->query($query) Getter/Setter for query like object. $validator->check(@rule_ary) my $res = $validator->check( name => [qw/NOT_NULL/], name_kana => [qw/NOT_NULL KATAKANA/], {mails => [qw/mail1 mail2/]} => ['DUPLICATION'], ); This method do validation. You can write a rule in @rule_ary. In above example code, *name* is a parameter name, *NOT_NULL*, *KATAKANA* and *DUPLICATION* are name of constraints. $validator->is_error($key) Return true value if parameter named $key got error. $validator->is_valid() Return true value if $validator don't detects error. This is same as "!$validator->has_error()". $validator->has_error() Return true value if $validator detects error. This is same as "!$validator->is_valid()". $validator->set_error($param, $rule_name) Set new error to parameter named "<$param">. The rule name is "<$rule_name">. $validator->errors() Return whole errors as HashRef. { 'foo' => { 'NOT_NULL' => 1, 'INT' => 1 }, 'bar' => { 'EMAIL' => 1, }, } $validator->load_constraints($name) $validator->load_constraints("DATE", "Email"); # or load your own constraints $validator->load_constraints("+MyApp::FormValidator::Lite::Constraint"); There is a import style. use FormValidator::Lite qw/Date Email/; load constraint components named "FormValidator::Lite::Constraint::${name}". $validator->load_function_message($lang) $validator->load_function_message('ja'); Load function message file. Currently, FormValidator::Lite::Messages::ja and FormValidator::Lite::Messages::en are available. $validator->set_param_message($param => $message, ...) $validator->set_param_message( name => 'Your Name', ); Make relational map for the parameter name to human readable name. $validator->set_message_data({ message => $msg, param => $param, function => $function }) $v->set_message_data(YAML::Load(<<'...')); --- message: zip.jzip: Please input correct zip number. param: name: Your Name function: not_null: "[_1] is empty" hiragana: "[_1] is not Hiragana" ... Setup error message map. $validator->set_message("$param.$func" => $message) $v->set_message('zip.jzip' => 'Please input correct zip number.'); Set error message for the $param and $func. my @errors = $validator->get_error_messages() my $errors = $validator->get_error_messages() Get whole error messages for "<$q"> in array/arrayref. This method returns array in list context, otherwise HashRef. my $msg = $validator->get_error_message($param => $func) Generate error message for parameter $param and function named $func. my @msgs = $validator->get_error_messages_from_param($param) Get error messages by $q for parameter $param. WHY NOT FormValidator::Simple? Yes, I know. This module is very similar with FV::S. But, FormValidator::Simple is too heavy for me. FormValidator::Lite is fast! Perl: 5.010000 FVS: 0.23 FVL: 0.02 Rate FormValidator::Simple FormValidator::Lite FormValidator::Simple 353/s -- -75% FormValidator::Lite 1429/s 304% -- AUTHOR Tokuhiro Matsuno THANKS TO craftworks nekokak tomi-ru SEE ALSO FormValidator::Simple, Data::FormValidator, HTML::FormFu LICENSE This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.