我正在使用Perl与Dancer和Template 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
)一样。任何提示/想法?
答案 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解决了这个问题。