【问题标题】:Form Validator In Perl CatalystPerl Catalyst 中的表单验证器
【发布时间】:2015-01-03 18:54:28
【问题描述】:

我想用 Catalyst MVC 框架比较两个日期字段。

我通过创建我的所有者插件来使用 FormValidator::Simple::Auto

有效.pm

有功能

子 COMPARE_DATE { 我的 ($self, $params, $args) = @_;

my $start_date = $params->[0];
my $end_date = $params->[1];
unless (defined $start_date and defined $end_date) {
    FormValidator::Simple::Exception->throw(
    qq/validation "COMPARE_DATE" needs two keys of data./
    );
}
return $start_date lt $end_date ? TRUE : FALSE;

}

但是我不知道怎么在profiles.yml中使用

我刚刚尝试过 开始日期: -规则:COMPARE_DATE 与:[开始日期,结束日期] 消息:开始日期必须大于结束日期

但没有成功。

【问题讨论】:

    标签: forms perl validation catalyst


    【解决方案1】:

    你试过DateTime吗?

    在我看来$star_date lt $end_date 并没有达到你的预期, 这是一个字符串比较,而不是日期比较。

    use DateTime;
    my $start_date = DateTime->new({ year => $year, month => $month, day => $day });
    my $end_date = DateTime->new({ year => $year, month => $month, day => $day });
    
    my $diff = $start_date - $end_date; # returns DateTime::Duration, this should be useful
    

    根据您的输入,您必须阅读文档才能使用正确的解析器, 不需要自己从字符串中获取日、月、年。

    文档非常好,模块也非常可靠,它想到了我们大多数人不会想到的事情;)。

    【讨论】:

    • 还是可以的,但是我想从profiles.yml中调用,怎么做?谢谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-03-25
    • 1970-01-01
    • 2016-05-06
    • 2012-08-09
    • 2018-08-24
    • 1970-01-01
    • 2012-02-13
    相关资源
    最近更新 更多