Perl和模板工具包:在我的模板中通过自定义过滤器
问题描述:
(通过Template Toolkit
)对象字符串化,我通过DateTime对象(从DBIx::Class
和DBIx::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编码和类似。
谢谢。我选择了vmethod并使用以下作品.'my $ tt = Template-> new; $ tt-> context-> define_vmethod('hash','timeago',\&time_ago);' – 2011-03-17 04:22:30