Catalyst で Template::Filters::LazyLoader を使ってみた
package MyApp::V::TT; use strict; use base 'Catalyst::View::TT'; use Template::Filters::LazyLoader; __PACKAGE__->config(TEMPLATE_EXTENSION => '.tt'); __PACKAGE__->config( FILTERS => do { my $lazy = Template::Filters::LazyLoader->new; $lazy->base_pkg( 'MyTT::Filters' ); $lazy->load; } ); 1;
package MyTT::Filters::String; sub fs_foo { 'foo!!' } 1;
hoge.tt
<html> <body> [% hoge | foo %] </body> </html>
実行結果:
foo!!
Static でも Dynamic でも好きなフィルターを MyTT::Filters の中にパッケージ化して作っていける。
デフォルトで Static フィルターの場合は'fs_'、Dynamicの場合は'fd_'を関数名の頭につける必要がある。
詳しくは下記参照
Template::Filters::LazyLoader