1

Template Toolkit を使用していますが、置換機能が機能しません。これが私のコードです...

  [% FOREACH item = file_conversions %]
  [% item.name | replace('a','z') %]
    <option value="[% item.name %]">[% item.name %]</option>
  [% END %]

上記の場合の置換は、item.name に対して何もしません。キックのために、次のように切り替えました...

  [% FOREACH item = file_conversions %]
  [% item.name="Janie" | replace('a','z') %]
    <option value="[% item.name %]">[% item.name %]</option>
  [% END %]

そして、それは完璧に機能します。

TT で変数を単純に置換できない理由を知っている人はいますか?

4

2 に答える 2

1

置換は、TTの2つのコンテキストで表示されます。フィルターとして、およびスカラーの仮想メソッドとしてです。

   Virtual method modifies the scalar:

    [% item.name.replace('a', 'z') #item.name has changed %]

   Filter modifies the output:

    [% item.name |replace('a', 'z') #item.name has not changed %]

元の問題の場合、フィルターを使用しているため、item.nameの値は同じままです。「動作中」の例では、値「Janie」をフィルタリングしてから、結果をitem.nameに割り当てています。

   [% item.name = 
        'Janie' | replace('a', 'o') %]

これは古い投稿であり、あなたは先に進みましたが、おそらく誰かがこれが役立つと思うでしょう!(実際、私はそれに答えるためにいくつかのことを調べなければならなかったときにしました!)

于 2012-01-05T20:54:33.643 に答える
0

みんな!私はそれを考え出した!これはうまくいきます!

  [% FOREACH item = file_conversions %]
    [% item.name = item.name.replace('a','z') %]
    <option value="[% item.name %]">[% item.name %]</option>
  [% END %]
于 2011-04-15T18:29:33.107 に答える