1

我正在为表单使用 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,即使它被选中。

关于我做错了什么的任何想法?

4

1 回答 1

0

在深入研究 HTML::FormHandler 文档后,我能够找出我的错误。字段 autosys_jobs.schedule 是一个复合字段(忘了提)

has_field 'autosys_jobs.schedule' => ( type => 'Compound');

为了访问感兴趣的领域,我必须在我的验证子中使用以下内容:

$self->field('autosys_jobs.0.schedule.has_run_day_of_month')->value

谢谢大家

于 2015-10-07T16:17:15.243 回答