ошибка при использовании набора шаблонов Perl - PullRequest
0 голосов
/ 03 ноября 2011

Я пытался получить эти данные с помощью набора инструментов шаблона, но не смог получить.

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

Я не могу получить значенияи также это не дает никакой ошибки, пожалуйста, помогите, как получить эти значения.

Ответы [ 2 ]

1 голос
/ 03 ноября 2011

У вас есть две st переменные. Я точно не помню, как ТТ обрабатывает прицел, но подозреваю, что это не очень хорошая вещь. Вы также пытаетесь извлечь значения из переменной с именем 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 %]
1 голос
/ 03 ноября 2011

Измените ваш шаблон на:

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