Фильтруя базар
Sep. 12th, 2007 07:54 pmНаписал собственный фильтр для TT. Это оказалось достаточно просто:
package MyApp::View::TT;
use strict;
use base 'Catalyst::View::TT';
use POSIX 'strftime';
__PACKAGE__->config({
...
FILTERS => {
'date' => \&filter_date
},
...
});
=head2 filter_date
Фильтр.
Форматирует дату: преобразовывает её из вида, возвращаемого MySQL YYYY-MM-DD
в определяемую локалью DD.MM.YYYY
=cut
sub filter_date {
my $date = shift;
return unless $date;
my ($yyyy, $mm, $dd) = ($date =~ /(\d+)\D+(\d+)\D+(\d+)/) or return;
return strftime('%x', 0, 0, 0, $dd, $mm-1, $yyyy-1900);
} # sub filter_date
Теперь даты выводятся в правильном виде, как ДД.ММ.ГГГГ, а не как ГГГГ-ММ-ДД. Причём вызывать фильтр гораздо удобнее, чем обычные функции:[% some_date | date %]
no subject
Date: 2008-04-15 02:53 pm (UTC)[% date.format(date.now, '%d.%m.%Y') %]
Чем
Date: 2008-04-15 06:23 pm (UTC)