Perl 和模板工具包:自定义过滤器中的对象字符串化
在我的模板中(通过 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 对象,但它是 stringify 。
我该如何解决这个问题?
in my template(via Template Toolkit
), I pass a DateTime object(from DBIx::Class
and DBIx::Class::InflateColumn::DateTime
). I can do obj.year and all other DateTime operations in my template. But the object gets stringified in my custom filter. I am basically calling [% user.last_visited_date | time_ago %]
where time_ago is a custom filter basically looks like this:
sub timeago {
sub { my $datetime_obj = shift; #do more work }
}
here I am expecting a DateTime obj in the custom filter but instead it is stringify..
How do I work around this?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
不要使用过滤器,而是编写一个自定义插件:
或者添加 自定义 vmethod:
过滤器用于文本修改,例如 HTML编码等。
Don't use a filter for that, write a custom plugin instead:
Or add a custom vmethod:
Filters are meant for text mangling such as HTML encoding and the like.