2014-03-05 64 views
0

我對TT還是比較新的,所以我所要求的可能沒有意義,也是不可能的,如果是的話,我會找到另一種方式,基本上我使用FOREACH循環來運行數組的變量和建立一個表,它工作正常,但我基本上想添加部分標題,這裏的問題。如果我在數組中有段('字符串'),如何打印該字符串?TT如何在數組中的變量中打印字符串?

我將舉一個我的代碼的例子。

的數據陣列構建

content_list=[ 

      section('First Section'),"somecontent","some_other_content", 

      section('Second Section'), "somecontent", "some_other_content" 
] 

構建代碼

<table> 

    [% FOREACH entry IN content_list %] 

     [% IF entry == section %] 
     <tr> 
      <th> [% #this needs to output the string, ie 'First Section' %]</th> 
     </tr> 
     [% END %] 

     <tr> 
      <td>The content is: [% entry %]</td> 
     </tr> 

    [% END %] 

</table> 

它會識別何時進入=部分和打印次,但我無法弄清楚如何得到它打印部分中包含的字符串?任何幫助將非常感激!

(我知道有可能是一個更方便,更合理的方式解決此但這是一大塊的代碼,就需要改變的一個小片段笑)

回答

0

到底是什麼在你的數組引用section(arg)?這是一個TT宏還是您的示例僞代碼?

我感謝你不想重寫整個事情。是否有可能藏匿的方式,允許以後識別的部分標題,這是它們是什麼,即:

content_list=[ 
    { section => 'First Section' }, "somecontent", "some_other_content", 
    { section => 'Second Section' }, "somecontent", "some_other_content" 
]; 

,稍後:

[% IF entry.section %] 
    <tr> 
     <th> [% entry.section %]</th> 
    </tr> 
    [% END %] 

如果你走這條路,你可能要考慮將數組中的所有元素,以小hashrefs,即:

content_list = [ 
    { content => 'First Section', section=>1 }, { content => "somecontent" }, 
    { content => "some_other_content" }, { content => 'Second Section', section=>1 }, 
    { content => "somecontent" }, { content => "some_other_content", some_flag=>1 } 
]; 

然後每個entry IN content_list可以有自己的屬性來滿足的對象。


另一種方法是創建你知道是標題內容項的小散,並測試它們,即:

[% SET header = { 'First Section' => 1, 'Second Section' => 1, ... }; %] 

,稍後:

[% IF header.$entry %] 
    <tr> 
     <th>[% entry %]</th> 
    </tr> 

+0

第一個建議工作完美:)最初的部分代碼是TT宏,但我嘗試了一種不同的方法bu爲這個項目定製應該更靈活和更容易實現的用戶大聲笑 感謝您的幫助RET:DI也讚賞關於將數組轉換爲小哈希表的建議,但對於這個特殊項目,這是必要的,但我一定要記住;)我會upvote你的答案,但我沒有足夠的聲譽大聲笑 – Dicko

+0

謝謝。例如,TT的一大優勢就是能夠無縫地處理被傳遞給對象的數組引用,例如DBIx :: Class數據行。祝你的項目好運。 – RET

相關問題