1

我正在使用模板工具包,替换功能不起作用。这是我的代码...

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

Replace 出现在 TT 中的两个上下文中:作为过滤器,以及作为标量的虚拟方法。

   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 回答