2011-04-15 12 views
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中的變量?

回答

0

嘿傢伙!我想到了!這很好用!

[% FOREACH item = file_conversions %] 
    [% item.name = item.name.replace('a','z') %] 
    <option value="[% item.name %]">[% item.name %]</option> 
    [% END %] 
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的值保持不變。在「工作」例如,要篩選值「珍妮」,然後分配結果item.name:

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

這是一個老帖子,你已經轉移,但也許有人會覺得這有幫助! (實際上,當我不得不看幾件東西來回答它時!)

相關問題