Perl и Template Toolkit: объект stringify в пользовательском фильтре - PullRequest
0 голосов
/ 16 марта 2011

в моем шаблоне (через 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 ..

Как мне обойти это?

1 Ответ

5 голосов
/ 16 марта 2011

Не используйте фильтр для этого, вместо этого напишите пользовательский плагин :

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

Или добавьте пользовательский vmethod :

[% user.last_visited_date.time_ago %]

Фильтры предназначены для искажения текста, такого как кодировка HTML и т. П.

...