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);
$validator->load_function_message('en');
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
<ul>
? for my $msg ($validator->get_error_messages) {
<li><?= $msg ?></li>
? }
</ul>
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->parammethod. -
$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
$keygot error. -
$validator->is_valid()
Return true value if
$validatordon't detects error.This is same as
!$validator->has_error(). -
$validator->has_error()
Return true value if
$validatordetects 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 <tokuhirom AAJKLFJEF@ gmail.com>
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.