2014-03-12 123 views
2

我有一个数组,其内容是访问模板混杂键工具包

$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 %] 

的日期格式.x应根据x的值显示2011年5月5日或2009年7月22日或2012年6月13日,但错误是它不显示任何内容。它显示一个空白。

我认为错误是数组中的键是一个字符串,而与dateformat一起使用的x的值是数字。如果我添加0或1与dateformat然后它显示正确([%dateformat.0%])。

+0

我不明白你想要做什么,出了什么问题。或者甚至根本看是否有问题,看你如何才能说明某件事是正确显示的。可能只是我,但我个人建议你换个问题,如果你想回答一些问题。 – DeVadder

回答

7

[% dateformat.x %]看起来在dateformat哈希为x的关键。告诉模板工具包,x是一个变量,与$前缀是:

[% dateformat.$x %] 

访问使用存储在另一个变量的一个关键的哈希表项​​,“$”有它之前插入前缀的关键变量使用(见Variable Interpolation)。

3

我很感激这个问题已经被问及回答,但一个方便的替代方案是item()VMethod

[%- 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" 
-%] 

VMethods像firstlastsizesort是这里粗心的常见陷阱:当你有哈希键与VMethods冲突,这是特别有效的。