我正在使用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中的变量进行简单替换?
答案 0 :(得分:1)
替换出现在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') %]
这是一篇很老的帖子,你继续前进,但也许有人会觉得这很有帮助! (实际上,当我不得不看几件事来回答它时,我做了!)
答案 1 :(得分:0)
[% FOREACH item = file_conversions %]
[% item.name = item.name.replace('a','z') %]
<option value="[% item.name %]">[% item.name %]</option>
[% END %]