Hatena::ブログ(Diary)

黒羊工房はてな版

2011-06-04

[][][]Mojolicious::LiteでテンプレートにTenjinを使う

use Mojolicious::Lite;
use Tenjin;

get '/' => sub {
    my $self = shift;
    $self->render(
        'index',
        handler => 'tenjin',
        foo => 'bar'
    );
};

app->renderer->add_handler(
    tenjin => sub {
        my ($r, $c, $output, $options) = @_;
        my $tenjin = Tenjin->new({ path => ['templates'] });

        my $stash;
        for (keys %{$c->stash}) {
            $stash->{$_} = $c->stash->{$_} unless $_ =~ /mojo/;
        }
        $$output = $tenjin->render($options->{template}.'.tenjin', $stash);
    }
);
app->start;

基本的にはこの辺参照

Mojolicious::Guides::Rendering


Tenjinではテンプレートに渡すデータ「{foo=>'bar'}」を「$foo='bar'」と変数に変換して展開するが、Mojoliciousでは$c->stashにデータだけでなく'mojo.captures'のようなドット付きのキーがいくつか入っていて変数展開しようとすると文字列結合しようとしてエラーが出るのでそれらを除いた分だけを渡す

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証

トラックバック - http://d.hatena.ne.jp/bsheep/20110604/1307127488