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

jap*_*aph 0 perl template-toolkit

在我的模板(via 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 }
}
Run Code Online (Sandbox Code Playgroud)

在这里我期待自定义过滤器中的DateTime obj,但它是stringify ..

我该如何解决这个问题?

mu *_*ort 5

不要使用过滤器,而是编写自定义插件:

[% YourPlugin.time_ago(user.last_visited_date) %]
Run Code Online (Sandbox Code Playgroud)

或者添加自定义vmethod:

[% user.last_visited_date.time_ago %]
Run Code Online (Sandbox Code Playgroud)

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