ajd*_*con 0 perl template-toolkit dancer
我在Dancer中有一个非常简单的问题:我有一系列名字,我想在模板中打印每一个.这些名称来自外部源(不是数据库).但是,当我尝试对模板中的列表进行foreach时,我只得到第一个值.
码:
use Dancer;
use Template;
set 'template' => 'template_toolkit';
get '/' => sub {
my @list = ("one","two","three");
template 'list.tt', {
'values' => @list,
};
};
dance;
Run Code Online (Sandbox Code Playgroud)
和模板:
<ul>
<%FOREACH item IN values %>
<li><% item %></li>
<%END%>
</ul>
Run Code Online (Sandbox Code Playgroud)
这仅输出具有单个项目"一个"的列表.我错过了什么?
Bla*_*iev 14
表达式'values' => @list扩展为包含的列表"values" "one" "two" "three",因此您应该尝试使用对数组的引用:
template 'list.tt', {
'values' => [@list],
};
Run Code Online (Sandbox Code Playgroud)
以上仍然复制@list并返回参考.如果要获取对现有数组的引用,请使用\@list.
我打赌它是因为你必须将数组引用传递给'values':
template 'list.tt', {
'values' => \@list,
};
Run Code Online (Sandbox Code Playgroud)
否则列表会扩展,你实际上正在传递:
template 'list.tt', {
'values' => $list[0],
$list[1] => $list[2],
};
Run Code Online (Sandbox Code Playgroud)