繁体   English   中英

使用perl模板工具包时出错

[英]error while using perl template toolkit

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

$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 %]

我无法获取值,并且它不会给出任何错误,请帮助如何获取此值。

将模板更改为:

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

你有两个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 %]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM