my $config = {
    rules => [ 'Email',    'String' ],
    setting => {
        strict => {
            email     =>   {
                rule =>    ['Email#email']
            },
            password =>    {
                rule =>    [
                    {      'String#length' => {
                               'min' => '4',
                               'max' => '12'
                           }
                        },
                        'String#ascii'
                   ]
              },
          }
     },
     lang    => 'ja',
     labels => {
          ja => {
              email      => '            ',
              password => '         '
          }
     },
};
use FormValidator::LazyWay;

my $fv = FormValidator::LazyWay->new($config);
my $result = $fv->check($q, {
    required => [qw/nickname email password/],
    optional => [qw/message/]
});
my $result = $fv->check($q, {
    required => [qw/title/],
    optional => [qw/body/]
});




my $result = $fv->check($q, {
    optional => [qw/title body/]
});
my $result = $fv->check($q, {
    required => [qw/nickname email password/],
    optional => [qw/message/]
});

if ( $result->has_error ) {
    print Dumper $result->error_message;

    # output
    #$VAR1 = {
    # 'email' => '                     ',
    #    'password' => '           4        12   '
    #};
}
else {

    # OK!
    print Dumper $result->valid;
}
setting:                      my $result = $fv->check( $cgi,
  strict:                         {   required => [qw/email/],
    email:                            level => {
                                          email => 'loose'
      rule:
                                      }
        - Email#email
                                  }
  loose:                      );
    email:
      rule:
        - Email#email_loose
setting:
  regexp_map:
    '_id$':
      rule:
         - Number#integer
merge:
  date:
    format: "%04d-%02d-%02d"
    fields:
       - year
       - month
       - day
strict:
  date:
    rule:
       - DateTime#date
setting:
  strict:
    date:
      filter:
         - Unify#hyphen
      rule:
         - DateTime#date
      fix:
         - DateTime#format:
             - '%Y-%m-%d'
my $result = $fv->check($q, {
    required => [qw/nickname email password/],
    optional => [qw/message/]
});

if ( $result->has_error ) {
    print Dumper $res->error_message;
}

#                   DateTime
print $result->valid->{date};
my $result = $fv->check($q, {
    required => [qw/nickname email password/],
    optional => [qw/message/]
});

$result->custom_invalid(
  'email_not_unique',
  '                                     '
);

if ( $res->has_error ) {
    print Dumper $res->error_message;
}
my $wants_to_validate = {
    nickname => 'vkgtaro',
    email    => 'vkg.taro@gmail.com',
    password => 'mypass',
};

my $result = $fv->check($q, {
    required => [qw/nickname email password/],
    optional => [qw/message/],
    custom_parameters => $wants_to_validate,
});
messages :
    ja :
         rule_message : __field__     __rule__
        rule :
            Email#email   :
            String#length : $_[min]              $_[max]
messages :
    ja :
         rule_message : __field__     __rule__
        rule :
            Email#email   :
            String#length : $_[min]              $_[max]
FormValidator::LazyWay で検証ルールをまとめよう
FormValidator::LazyWay で検証ルールをまとめよう
FormValidator::LazyWay で検証ルールをまとめよう

FormValidator::LazyWay で検証ルールをまとめよう

  • 25.
    my $config ={ rules => [ 'Email', 'String' ], setting => { strict => { email => { rule => ['Email#email'] }, password => { rule => [ { 'String#length' => { 'min' => '4', 'max' => '12' } }, 'String#ascii' ] }, } }, lang => 'ja', labels => { ja => { email => ' ', password => ' ' } }, };
  • 26.
    use FormValidator::LazyWay; my $fv= FormValidator::LazyWay->new($config); my $result = $fv->check($q, { required => [qw/nickname email password/], optional => [qw/message/] });
  • 27.
    my $result =$fv->check($q, { required => [qw/title/], optional => [qw/body/] }); my $result = $fv->check($q, { optional => [qw/title body/] });
  • 28.
    my $result =$fv->check($q, { required => [qw/nickname email password/], optional => [qw/message/] }); if ( $result->has_error ) { print Dumper $result->error_message; # output #$VAR1 = { # 'email' => ' ', # 'password' => ' 4 12 ' #}; } else { # OK! print Dumper $result->valid; }
  • 29.
    setting: my $result = $fv->check( $cgi, strict: { required => [qw/email/], email: level => { email => 'loose' rule: } - Email#email } loose: ); email: rule: - Email#email_loose
  • 30.
    setting: regexp_map: '_id$': rule: - Number#integer
  • 31.
    merge: date: format: "%04d-%02d-%02d" fields: - year - month - day strict: date: rule: - DateTime#date
  • 34.
    setting: strict: date: filter: - Unify#hyphen rule: - DateTime#date fix: - DateTime#format: - '%Y-%m-%d'
  • 35.
    my $result =$fv->check($q, { required => [qw/nickname email password/], optional => [qw/message/] }); if ( $result->has_error ) { print Dumper $res->error_message; } # DateTime print $result->valid->{date};
  • 36.
    my $result =$fv->check($q, { required => [qw/nickname email password/], optional => [qw/message/] }); $result->custom_invalid( 'email_not_unique', ' ' ); if ( $res->has_error ) { print Dumper $res->error_message; }
  • 37.
    my $wants_to_validate ={ nickname => 'vkgtaro', email => 'vkg.taro@gmail.com', password => 'mypass', }; my $result = $fv->check($q, { required => [qw/nickname email password/], optional => [qw/message/], custom_parameters => $wants_to_validate, });
  • 44.
    messages : ja : rule_message : __field__ __rule__ rule : Email#email : String#length : $_[min] $_[max]
  • 45.
    messages : ja : rule_message : __field__ __rule__ rule : Email#email : String#length : $_[min] $_[max]