如何使FormValidator :: Simple对多个键使用相同的规则?

时间:2011-09-07 04:33:33

标签: perl validation

现在它看起来非常冗长:

key1 => THE_SAME_RULE,
key2 => THE_SAME_RULE,
..
keyn => THE_SAME_RULE,

有没有办法以更简洁的方式表达这一点?

2 个答案:

答案 0 :(得分:2)

值只是数据,因此您可以拥有一个额外的变量来保存规则,然后在构建规则集时引用该变量。例如:

my $email  = ['NOT_BLANK', 'EMAIL_LOOSE'];
my $result = FormValidator::Simple->check( $query => [
    mail1 => $email,
    mail2 => $email,
] );

理论上,您可以构建一个完整的规则库,然后在任何地方使用该库:

my $result = FormValidator::Simple->check( $query => [
    mail  => $AskersRules::EMAIL,
    phone => $AskersRules::PHONE,
    # etc.
] );

然后您就不必重复自己,并且您有一个用于重复使用和测试目的的中央库。

我认为你也可以这样做:

{ ks => [ 'key1', 'key2' ] } => THE_SAME_RULE

如果这就是你所追求的。来自fine manual

my $result = FormValidator::Simple->check( $q => [
    { mails => ['mail1', 'mail2'] } => [ 'DUPLICATION' ],
] )

答案 1 :(得分:0)

所以你想要一个循环,并且你想要它在一个表达式中。这引起了map

( map { $_ => THE_SAME_RULE } qw( key1 key2 .. keyn ) )