Perl和Template Toolkit:自定义过滤器中的对象stringify

时间:2011-03-16 05:16:44

标签: perl template-toolkit

在我的模板中(通过Template Toolkit),我传递一个DateTime对象(来自DBIx::ClassDBIx::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 ..

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:5)

不要使用过滤器,而是写一个custom plugin

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

或添加custom vmethod

[% user.last_visited_date.time_ago %]

过滤器用于文本修改,例如HTML编码等。