我还是相当新的TT,所以我所要求的可能没有意义,也不可能,如果是这样我会找到另一种方法,基本上我正在使用FOREACH循环来运行变量数组和构建表,它工作正常但我基本上想要添加节标题,这就是问题所在。如果我在数组中有section('string'),我该如何打印该字符串?
我将举例说明我的代码。
要构建的数据数组
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>
它将识别entry = section并打印th,但我无法弄清楚如何打印该部分中包含的字符串?任何帮助将不胜感激!
(我意识到这可能是一个更简单,更合乎逻辑的方法,但这是一小段代码的小片段,需要改变大声笑)
答案 0 :(得分:0)
您的arrayref中的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>
等