在我的模板中(通过Template Toolkit
),我传递一个DateTime对象(来自DBIx::Class
和DBIx::Class::InflateColumn::DateTime
)。我可以在我的模板中执行obj.year和所有其他DateTime操作。但是对象在我的自定义过滤器中被字符串化。我基本上是在调用[% user.last_visited_date | time_ago %]
,其中time_ago是一个自定义过滤器,基本上看起来像这样:
sub timeago {
sub { my $datetime_obj = shift; #do more work }
}
这里我期待自定义过滤器中的DateTime obj,但它是stringify ..
我该如何解决这个问题?
答案 0 :(得分:5)
不要使用过滤器,而是写一个custom plugin:
[% YourPlugin.time_ago(user.last_visited_date) %]
或添加custom vmethod:
[% user.last_visited_date.time_ago %]
过滤器用于文本修改,例如HTML编码等。