首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在$ CGI ->radio_group()中控制字体的Perl cgi语法

在$ CGI ->radio_group()中控制字体的Perl cgi语法
EN

Stack Overflow用户
提问于 2014-02-07 04:49:28
回答 2查看 674关注 0票数 0

在谷歌搜索之后,我找不到很多例子,我的试验也无法控制我的单选按钮文本的字体/类。

代码语言:javascript
复制
 $cgi->radio_group( { -name => "product-$i", -values => \@p, -labels => \%labs,
               -default => $thisP , -labelattributes => { -class => 'element' } } )

生成以下内容:

代码语言:javascript
复制
input name="product-3" value="1X" labelattributes="HASH(0xa9fd6cc)" type="radio"

这似乎非常奇怪,因为我遵循了CGI指南中的语法,但显然这是不正确的。

我还尝试使用-attributes而不是-labelattributes执行相同的语句,结果如下所示

代码语言:javascript
复制
 $cgi->radio_group( { -name => "product-$i", -values => \@p, -labels => \%labs,
               -default => $thisP , -attributes => { -class => 'element' } } )

生成以下内容:

代码语言:javascript
复制
input name="product-3" value="1X"  type="radio"

因此,这显然没有任何作用。

非常感谢您的帮助!

EN

回答 2

Stack Overflow用户

发布于 2014-02-07 06:38:50

其他人将信息提供到模板系统中,这是首选的。关于您的原始问题,您可能使用的是过时版本的CGI。使用-labelattributes属性时,您遇到的问题不能在高于3.40的版本中复制。

代码语言:javascript
复制
use CGI;
print CGI->VERSION;
票数 3
EN

Stack Overflow用户

发布于 2014-02-07 06:33:36

使用像Template Toolkit这样的模板库比使用CGI生成HTML更容易(在可读性和可维护性方面都是如此)。下面是一个TT模板示例:

代码语言:javascript
复制
<html>
<head>
    <title>Hello, Template Toolkit!</title>
    <link rel="stylesheet" type="text/css" href="styles.css">
</head>
<body>
    <h1>Behold...buttons!</h1>
    [% FOREACH button = buttons %]
        <label>[% button.label %]<input type="radio" name="[% group_name %]"
                value="[% button.value %]" class="foo"/></label>
    [% END %]
</body>
</html>

请注意,它主要是普通的HTML。[%%]中的位是TT指令。您可以在CGI脚本中使用模板,如下所示:

代码语言:javascript
复制
#!/usr/bin/perl -T

use strict;
use warnings;

use CGI;
use Template;

my @buttons = (
    { value => 1, label => 'foo' },
    { value => 2, label => 'bar' },
);

my $template_vars = {
    group_name => 'foo',
    buttons    => \@buttons,
};

my $q = CGI->new;
print $q->header;

my $tt = Template->new or die Template->error;    
$tt->process('foo.tt2', $template_vars) or die $tt->error;

请注意,使用CSS样式表执行元素的可视样式是一种很好的实践。这包括标签的字体之类的东西。

运行上面的CGI时,HTML输出如下所示:

代码语言:javascript
复制
<html>
<head>
    <title>Hello, Template Toolkit!</title>
    <link rel="stylesheet" type="text/css" href="styles.css">
</head>
<body>
    <h1>Behold...buttons!</h1>

        <label>foo<input type="radio" name="foo"
                value="1" /></label>

        <label>bar<input type="radio" name="foo"
                value="2" /></label>

</body>
</html>
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21613747

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档