2014-03-05 63 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

相关问题