使用Template toolkit创建分组输出

时间:2010-12-02 10:32:20

标签: template-toolkit

我有一个数据文件

city : name
London : John
London : George
Paris : Jean

我想输出

London 
    John
    George
Paris 
    Jean

我觉得我想要像

这样的东西
[% USE namelist = datafile( 'namelist.txt' )  %]
[%   FOREACH city = unique namelist.city ???  %]
[% city %]
[%   FOREACH name =????  %]
[% name %]

[%END %]    
[%END %]

1 个答案:

答案 0 :(得分:2)

最好在控制器中执行此类数据。模板工具包的工作就是把事情做好,让它们变得漂亮,而不是“计算”。

你想要的更像是:

 [% SET list = formatter.group_them('namelist.txt') %]
 [% FOREACH item IN list %]
 [% item.key %]
    [% FOREACH name IN item.value %]
        [% name %]
    [% END %]
 [% END %]

可以通过各种方式做你想做的事。您可以使用VMethods http://template-toolkit.org/docs/manual/VMethods.html拆分,创建数组,再次拆分,构建哈希:

[% data = INSERT 'namelist.txt' %]
[% lines = data.split("\n") %]\
[% list = {} %]
[% FOREACH line IN lines %]  
    [% pair = line.split(': ') %]
    [% city = pair.0; name = pair.1; list.city.push(name)  %]
[% END %]

好的,我不得不承认,在我继承的模板中看到这一点我会感到羞愧。但有时我们做的事情是有充分理由侮辱他人......当时......: - )

稍微好一点的方法是插入

[% RAWPERL %] 

块。至少在这种情况下,您承认,您在模板中拥有代码并以自然而有效的方式执行操作。