Perl和模板工具包:在我的模板中通过自定义过滤器

问题描述:

(通过Template Toolkit)对象字符串化,我通过DateTime对象(从DBIx::ClassDBIx::Class::InflateColumn::DateTime)。我可以在模板中执行obj.year和所有其他DateTime操作。但是该对象在我的自定义过滤器中被串化。我基本上呼吁[% user.last_visited_date | time_ago %]其中TIME_AGO是一个自定义过滤器基本上是这样的:Perl和模板工具包:在我的模板中通过自定义过滤器

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

这里,我期待在自定义过滤器日期时间OBJ,而是它是字符串化..

如何解决这个?

不要使用过滤器的是,写一个custom plugin来代替:

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

或者添加custom vmethod

[% user.last_visited_date.time_ago %] 

过滤器是指文本重整如HTML编码和类似。

+1

谢谢。我选择了vmethod并使用以下作品.'my $ tt = Template-> new; $ tt-> context-> define_vmethod('hash','timeago',\&time_ago);' – 2011-03-17 04:22:30