0

私はデータファイルを持っています

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 %]
4

1 に答える 1

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 %] 

ブロック。少なくとも、テンプレート内にコードがあり、自然で効率的な方法で操作を行っていることを認めています。

于 2011-09-23T19:32:17.823 に答える