【问题标题】:Template::Toolkit don't evaluate variable as stringTemplate::Toolkit 不将变量评估为字符串
【发布时间】:2014-08-31 08:27:51
【问题描述】:

我正在使用 Template::Toolkit 并在 for 循环中尝试更改对象的时区:

[%- FOR item IN c.user.items -%] 
    [% item.date.set_time_zone(c.user.timezone.name) %]

    Date: [% item.date %] <br />
[% END %]

它可以工作并且会更改时区,但set_time_zone 函数会返回DateTime 对象,然后将其评估到页面上。因此,每次在 for 循环中,都会对字符串进行评估并将其放到页面上。我知道其他一些模板系统有两组标签,一组表示只运行此代码,另一组表示评估此代码并将其放在页面上。 Template::Toolkit 有这样的东西吗?我已经看过,但我似乎找不到任何东西。到目前为止,我发现没有在页面上评估字符串的唯一方法是设置返回给变量的值:

[% var = item.date.set_time_zone(c.user.timezone.name) %]

有谁知道在 Template::Toolkit 中执行此操作的更好方法?

【问题讨论】:

    标签: perl template-toolkit evaluate


    【解决方案1】:

    试试CALL 指令:

    [% CALL item.date.set_time_zone(c.user.timezone.name) %]
    

    来自文档:

    CALL 指令在评估命名变量时类似于 GET,但不打印返回的结果。当变量绑定到您想要调用但对返回值不感兴趣的子例程或对象方法时,这可能很有用。

    【讨论】:

      猜你喜欢
      • 2022-01-19
      • 1970-01-01
      • 1970-01-01
      • 2019-07-09
      • 1970-01-01
      • 2013-06-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多