我有一个数据文件
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 %]
答案 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 %]
块。至少在这种情况下,您承认,您在模板中拥有代码并以自然而有效的方式执行操作。