【发布时间】:2016-01-02 15:13:27
【问题描述】:
我正在使用 HTML::FormHandler 为表单开发一个 Perl/Catalyst Web 应用程序。 如果选中复选框,我正在尝试对字段进行条件验证。
下面的代码来自我为我的表单创建的角色。
has_field 'autosys_jobs.schedule.has_run_day_of_month' => ( type=>'Boolean');
has_field 'autosys_jobs.schedule.run_day_of_month' => ( type => 'PosInteger');
#Validation function for 'autosys_jobs.schedule.run_day_of_month'
sub validate_autosys_jobs_schedule_run_day_of_month {
my ( $self, $field ) = @_;
if( $self->field('autosys_jobs.schedule.has_run_day_of_month')->value ) {
#validate 'autosys_jobs.schedule.run_day_of_month'
}
}
我遇到的问题是$self->field('autosys_jobs.schedule.has_run_day_of_month')->value
对于布尔字段,即使被选中也总是返回 0。
关于我做错了什么有什么想法吗?
【问题讨论】:
-
是否调用了验证函数?因为 field ( type => 'boolean' ) 完全符合您的要求,所以我目前使用它没有问题 - 即对我来说,checkbox checked => field->value 为真。我问是因为 HTML::Formhandler 将自动使用 field_$fieldname subs 进行验证,但它被称为“validate_autosys_jobs_schedule_run_day_of_month”,而您的字段是“autosys_jobs.schedule.has_run_day_of_month”(注意点)
-
是的,正在调用验证函数。我也证实了这一点,文档指示用下划线重命名任何点。
-
不知道。似乎是唯一可能出错的事情,但我很高兴看到它不是而且你自己已经弄清楚了。也许您下次应该提及所有相关信息;)
标签: perl catalyst html-formhandler