Mojolicious アプリで Template::Toolkit つかいたいなー

| 0 Comments | 0 TrackBacks

Mojolicious アプリで Template::Toolkit つかいたいので、適当に実験してみた。

[% c.uri_for %] が適切に処理されるところまでは出来た。

どうするのがいいんでしょうか。良い方法あれば動くコードで教えてください!

charsbar さんに、MojoX::Renderer::TT を教えていただきました。Mojolicious アプリで Template::Toolkit をデフォルトのレンダラとして使う (解決編) - blog.woremacx.com をご覧ください。

package Vagina;

use strict;
use warnings;

use base 'Vagina::Base';

# This method will run for each request
sub dispatch {
    (ry
}

# This method will run once at server start
sub startup {
    (ry
}
1;
package Vagina::Base;

use strict;
use warnings;

use base 'Mojolicious';

use Vagina::Renderer;
use Vagina::Types;

__PACKAGE__->attr('renderer',
    chained => 1,
    default => sub { Vagina::Renderer->new }
);

__PACKAGE__->attr('types',
    chained => 1,
    default => sub { Vagina::Types->new }
);

1;
package Vagina::Renderer;

use strict;
use warnings;

use base 'MojoX::Renderer';

use Template;

sub new {
    my $self = shift->SUPER::new(@_);
    $self->default_ext('tt');
    $self->add_handler(tt => sub {
        my ($self, $c, $path) = @_;
        my $tt = Template->new({ABSOLUTE => 1}) or die $Template::ERROR;
        my $output;
        $path = $path;
        $tt->process($path, $c, \$output) or die $tt->error;
        return $output;
    });
    return $self;
}

1;
package Vagina::Types;

use strict;
use warnings;

use base 'MojoX::Types';

sub new {
    my $self = shift->SUPER::new(@_);
    $self->types({tt => 'text/html'});
    $self;
}

1;

No TrackBacks

TrackBack URL: http://blog.woremacx.com/MT/mt-tb.cgi/263

Leave a comment