2012-05-07 8 views
0

Mojoliciousで可能なように、CatalystのモジュールのDATAセクションのテンプレートをインライン化する方法を知っている人がいますか(私はTemplate Toolkitを使いたいです)Catalyst/TTのテンプレートをインライン化する

# /bar 
get '/bar' => sub { 
    my $self = shift; 
    $self->stash(one => 23); 
    $self->render('baz', two => 24); 
}; 

__DATA__ 

@@ baz.html.ep 
The magic numbers are <%= $one %> and <%= $two %>. 

これは、私がコードとして簡単に保守できるようにしていますが、すべてを後で別のファイルに移動する可能性があります。

おかげで、コンセプトの

シモーネ

答えて

4

証明:

package Foo::Bar::Controller::Root; 
use Moose; 
use namespace::autoclean; 
BEGIN { extends 'Catalyst::Controller' } 
use Inline::Files; 
use Template; 
__PACKAGE__->config(namespace => ''); 
sub end :ActionClass('RenderView') { 
    my ($self, $c) = @_; 
    my $in = readline $c->stash->{template}; 
    my $tt = Template->new; 
    my $out; 
    $tt->process(\$in, $c->stash, \$out) or die $tt->error; 
    $c->response->body($out); 
} 
sub bar :Path { 
    my ($self, $c) = @_; 
    $c->stash(template => 'BAZ', one => 23, two => 24); 
} 
__PACKAGE__->meta->make_immutable; 
1; 

__END__ 

__BAZ__ 
The magic numbers are [% one %] and [% two %]. 

それは動作しますが、私はそれをお勧めすることはできません。 Catalystが構築しているMVCの原則に大きな違反があります。

+1

私はそれがMVCの原則の濫用だとは思わない。一方、私はそれは特に素晴らしいアイデアだとは思わない:)初期の/小さなプロジェクトのハック、はい。物事を行うための標準的な方法として、それほど偉大ではない。 – singingfish

+0

ありがとうございました。私はまた、Data :: Section :: Simpleを試してみました。試してみると、試してみるのが早い段階では大丈夫ですが、10行以上のテンプレートの場合はそのままにしておきたいと思います。 – simone

関連する問題