我正在使用带有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>
这不会产生任何输出(但countTracks
和dump
一样正常)。有什么提示/想法吗?
您忘记了关闭/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解决了这个问题。