0

(ドキュメントから)次のようなことができるMojoliciousで可能と思われるように、CatalystのモジュールのDATAセクションにテンプレートをインライン化する方法(テンプレートツールキットを使用したい)を誰かが知っているかどうか疑問に思いました。

# /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

1 に答える 1

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の原則に対するひどい違反です。

于 2012-05-07T08:12:45.247 に答える