src*_*ulo 5 perl template-toolkit evaluate
我正在使用Template :: Toolkit并且在for循环中我试图更改对象的时区:
[%- FOR item IN c.user.items -%]
[% item.date.set_time_zone(c.user.timezone.name) %]
Date: [% item.date %] <br />
[% END %]
Run Code Online (Sandbox Code Playgroud)
它工作并且它改变了时区,但是该set_time_zone函数返回DateTime对象,然后将其计算到页面上.所以每次围绕for循环时,字符串都会被评估并放到页面上.我知道其他一些模板系统有两组标签,一组表示运行此代码,另一组表示评估此标记并将其放在页面上.Template :: Toolkit有这样的东西吗?我看了,但似乎找不到任何东西.到目前为止,我发现没有在页面上评估字符串的唯一方法是设置返回给变量的值:
[% var = item.date.set_time_zone(c.user.timezone.name) %]
Run Code Online (Sandbox Code Playgroud)
有没有人知道在Template :: Toolkit中更好的方法?
ste*_*enl 10
试试这个CALL指令:
[% CALL item.date.set_time_zone(c.user.timezone.name) %]
Run Code Online (Sandbox Code Playgroud)
从文档:
CALL指令在评估名为的变量时与GET类似,但不会打印返回的结果.当变量绑定到您要调用但对返回值不感兴趣的子例程或对象方法时,这可能很有用.