我有一个内容为
的数组$VAR1 = {
'1' => 'May 05, 2011',
'0' => 'Jul 22, 2009',
'2' => 'Jun 13, 2012'
};
我试图在催化剂模板中显示它,代码是
[% x = 0 %]
[% FOREACH mortgage IN mortgages %]
<table width=40% border=1 cellspacing="0" cellpadding="10">
<tr>
<td>Date</td>
<td><b>[% dateformat.x %]</b></td>
</tr>
</table>
[% x = x+1 %]
[% END %]
dateformat.x应根据x的值显示2011年5月5日或2009年7月22日或2012年6月13日,但错误是它不显示任何内容。它显示一个空白。
我认为错误是数组中的键是一个字符串,而与dateformat一起使用的x的值是数字。如果我使用dateformat添加0或1,则它会正确显示([%dateformat.0%])。
答案 0 :(得分:8)
[% dateformat.x %]
在dateformat
哈希中查找x
的密钥。要告诉模板工具包x
是变量,请在其前面添加$
:
[% dateformat.$x %]
要使用存储在另一个变量中的密钥访问哈希条目,请在键变量前加上'$',以便在使用前对其进行插值(参见Variable Interpolation)。
答案 1 :(得分:3)
我感谢您已经提出并回答了这个问题,但是item()
VMethod是一个方便的选择。当您的哈希键与VMethods冲突时,这尤其有效:
[%- SET myhash = { last => 'Blues', first => 'Elwood',
address => '1060 West Addison', city => 'Chicago' };
myhash.first; # doesn't do what you want,
# because first is a VMethod for 1st element in an array
myhash.item('first'); # displays "Elwood"
-%]
first
,last
,size
和sort
等VMethods是这里粗心的常见陷阱。