HTML :: FormHandler字段验证基于其他字段的检查状态

时间:2015-10-05 20:39:18

标签: perl catalyst html-formhandler

我正在使用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。

关于我做错的任何想法?

1 个答案:

答案 0 :(得分: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

全部谢谢