Xslateでtemplateファイルにアクセスする。

XslateのCookbookに書いてあったんですけど、slurp_templateをoverrideすると元のtemplateにアクセスできるようです。
Amon2でやるならこんな感じ。
とりあえずMyApp以下にXslate.pm(名前はなんでもいいけど)ってのを作って、Viewからはそいつを呼ぶようにします。

package MyApp::Xslate;

use parent qw/Text::Xslate/;
BEGIN { Text::Xslate->import(qw/html_escape html_builder/) }

sub slurp_template {
    my($self, $input_layer, $fullpath) = @_;

    my $content = $self->SUPER::slurp_template(
       $input_layer,
       $fullpath,
    );
    ### process $content ###
    return $content;
}

1;
package MyApp::Web::View;

use MyApp::Xslate;

my $view = MyApp::Xslate->new(+{
});

これで、overrideできました。
MyApp::Xslateの$contentは、元のtemplate(素のtemplate)が入ってるんで、キャッシュされる前に何か処理入れたい場合はこいつを加工してやれば色々できそう。

コメントを残す

メールアドレスが公開されることはありません。

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください