如何在cgi表单中打印数组的变量作为复选框名称?

时间:2018-03-28 11:16:11

标签: perl cgi

是否有一种简单的方法可以在cgi表单中打印复选框,其名称是数组的变量?

1 个答案:

答案 0 :(得分:2)

你有几个问题。

  1. 如果要将多个值传递给散列中的单个属性,则需要传递引用。您的代码(在未记录编辑的宽限期内将其从问题中删除之前)将被解释为:checkbox("-values" -> "apple", "orange" => "berry")
  2. checkbox只接受一个值。如果你想传递多个,那么你需要多次调用它
  3. CGI.pm' s HTML generation functions should no longer be used。改为切换到模板系统。
  4. 例如:

    #!/usr/bin/env perl
    
    use v5.10;
    use strict;
    use warnings;
    
    use Template;
    
    my @checkbox_values = qw[apple orange berry];
    my $template = q[
        Example template
        [% FOR item IN checkbox_values %]
        <input type="checkbox" name="example" value="[% item | html %]">
        [%- END %]
    ];
    
    print Template->new()->process(\$template, { checkbox_values => \@checkbox_values })
    

    注意:模板最好存储在单独的文件中。