2014-03-12 77 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衝突,這是特別有效的。