【问题标题】:error while using perl template toolkit使用 perl 模板工具包时出错
【发布时间】:2011-12-21 06:57:13
【问题描述】:

我尝试使用模板工具包获取此数据,但无法获取。

$var1={
      'Object'=>[
                {
                 'Component'=>[
                               {
                                'type'=>'analog',
                                'name'=>'Temp',
                                'value'=>'23'
                                },
                                 {
                                'type'=>'digital',
                                'name'=>'Temp',
                                'value'=>'22'
                                },
                                 {
                                'type'=>'analog',
                                'name'=>'pressure',
                                'value'=>'23'
                                },
                                 {
                                'type'=>'analog',
                                'name'=>'humidity',
                                'value'=>'23'
                                }
                               ]
                             }
                            ],
                           };

我试过这样

[% FOREACH st IN Object %]
[% FOREACH st IN Object.Component %]
[% Component.type %][% Component.name %][% Component.value %]
[% END %]
[% END %]

我无法获取这些值,而且它没有给出任何错误,请帮助如何获取这些值。

【问题讨论】:

  • object 在您的数据中是小写字母,但在您的模板中有一个大写字母 O
  • 抱歉我现在编辑了。但还是有问题
  • 您的模板中仍有两个同名的嵌套循环变量,然后您实际上并没有使用循环变量。

标签: perl template-toolkit


【解决方案1】:

将您的模板更改为:

[% FOREACH obj IN Object %]
[% FOREACH comp IN obj.Component %]
[% comp.type %] [% comp.name %] [% comp.value %]
[% END %]
[% END %]

【讨论】:

  • 非常感谢您的回复,并完美地回答了它。
【解决方案2】:

您有两个 st 变量。我不记得确切的 TT 如何处理范围,但我怀疑这不是一件好事。您还尝试从名为Component 的变量中提取值。您还没有实例化一个名为 component 的变量。请记住,在正常情况下,如果您引用不存在的变量,TT 不会给您错误,它只是不输出任何内容。

如果您想更改它以导致出现错误,您需要设置STRICT 配置选项。或者,设置一个调试选项:

my $template = Template->new(
    {
       STRICT => 1,      # or
       DEBUG => 'undef'
    });

尝试类似:

[% FOREACH obj in Object %]
    [% FOREACH item in obj.Component %]
      [% obj.type %] [% obj.name %] [% obj.value %]
    [% END %]
[% END %]

【讨论】:

    猜你喜欢
    • 2019-05-29
    • 1970-01-01
    • 2012-12-23
    • 2014-01-08
    • 2013-03-13
    • 2011-12-26
    • 1970-01-01
    • 2019-01-03
    • 2011-10-05
    相关资源
    最近更新 更多