Perl(舞者)&模板工具包 - 通过hashref循环

时间:2013-12-08 15:50:13

标签: perl template-toolkit dancer

我正在使用Perl与DancerTemplate Toolkit

我正在将hashref传递给我的模板。

这是它从数组(@musicList)构建的方式:

my $hashrMusic = {};
my $intCount = 0;

foreach my $track ( @musicList ) {
    $hashrMusic->{ $intCount } = $track;
    $intCount++ ;
}

这是哈希的Dumper版本:

 $VAR1 = {
      '1049' => '09 Faruk\'s Funk (Matt Stein + Nickodemus Rework).mp3',
      '127' => '45 There She Goes.mp3',
      '71' => 'Kenny Wayne Shepherd - One Foot On The Pass.mp3'
        };

这是我将hashref传递给模板的方式:

template 'scan.tt', {
    'countTracks' => scalar keys %$hashrMusic,
    'tracks' => $hashrMusic,
    'dump' => Dumper($hashrMusic),
}

现在我正在尝试循环使用hasref来显示它,使用以下TT代码:

          <ul>
            <% FOREACH track IN tracks %>
              <li><% track.value %></li>
            <% END %>
          </ul>

这不会产生输出(但countTracks是正常的,就像dump)一样。任何提示/想法?

2 个答案:

答案 0 :(得分:0)

你忘记了结束/李。你也在使用关于hashrefs的FOREACH。

试试这个:

 <ul>
   <% FOREACH track IN tracks %>
     <li>
       The key is: <% track.key %>
       The filename is: <% track.value.filename %>
     </li>
   <% END %>
 </ul>

有关FOREACH的完整文档,请访问:

http://www.template-toolkit.org/docs/manual/Directives.html#section_FOREACH

答案 1 :(得分:0)

Dancer默认情况下不使用TemplateToolkit,而是一个不支持TT标签的外观模板引擎。 挖掘配置文件并将模板引擎配置为TT解决了这个问题。