0

在我的模板(通过Template Toolkit)中,我传递了一个 DateTime 对象(来自DBIx::ClassDBIx::Class::InflateColumn::DateTime)。我可以在我的模板中执行 obj.year 和所有其他 DateTime 操作。但是该对象在我的自定义过滤器中被字符串化。我基本上是在调用[% user.last_visited_date | time_ago %]where time_ago 是一个自定义过滤器,基本上看起来像这样:

sub timeago { 
   sub { my $datetime_obj = shift; #do more work }
}

在这里,我期望自定义过滤器中有一个 DateTime obj,但它是 stringify..

我该如何解决这个问题?

4

1 回答 1

5

不要为此使用过滤器,而是编写一个自定义插件

[% YourPlugin.time_ago(user.last_visited_date) %]

或添加自定义 vmethod

[% user.last_visited_date.time_ago %]

过滤器用于文本处理,例如 HTML 编码等。

于 2011-03-16T05:41:36.653 回答