Perl (Dancer) & Template Toolkit - looping thru hashref



我正在使用带有Dancer和Template Toolkit的Perl。

我正在向我的模板传递一个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>

这不会产生任何输出(但countTracksdump一样正常)。有什么提示/想法吗?

您忘记了关闭/li。此外,你在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

Dancer默认不使用TemplateToolkit,而是一个看起来像模板的引擎,不支持TT标记。挖掘配置文件并将模板引擎配置为TT解决了这个问题。

最新更新