为什么Perl的CGI :: FormBuilder会抱怨'没有为select指定选项'?

时间:2010-03-30 08:17:39

标签: perl formbuilder

我从CGI脚本中收到此错误:

  

my_circle.pl:[FormBuilder]警告:metro:在/home/ecoopr/ecoopr.com/CPAN/CGI/FormBuilder.pm第1407行没有为'select'字段指定选项,引用:http://kkarnam.ecoopr.dyndns.org:880/home.pl < / p>

你能告诉我可能是什么问题吗?

2 个答案:

答案 0 :(得分:1)

正如错误消息所示,您可能正在尝试构建select表单小部件而不指定任何选项。

找出触发CGI::FormBuilder部分的内容。您可以使用类似Carp::Always之类的内容将所有错误和警告转换为堆栈跟踪,以便您可以返回到启动问题的代码行。

相关代码是prepare方法中的匿名哈希构造,看起来它希望您为select提供一些选项:

1406         # Create a struct for each field
1407         $tmplvar{field}{"$field"} = {
1408              %$field,   # gets invalid/missing/required
1409              field   => $field->tag,
1410              value   => $value[0],
1411              values  => \@value,
1412              options => [$field->options],
1413              label   => $field->label,
1414              type    => $field->type,
1415              comment => $field->comment,
1416              nameopts => $field->nameopts,
1417              cleanopts => $field->cleanopts,
1418         };

答案 1 :(得分:0)

确保为选择定义了一些选项 例如,请考虑此表单字段定义:

$form->field(
    name     => 'dept_id',
    label    => 'Dept',
    type     => 'select',
    options  => \@dept_options,
    required => 1,
);

如果@dept_options数组为空,CGI::FormBuilder将发出警告。