我想知道是否有人知道如何在Catalyst中的模块的DATA部分中内联模板(我想使用模板工具包),就像在Mojolicious中看起来可能的那样,你可以做这样的事情(来自文档) ):
# /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 %>.
虽然我可能会稍后将所有内容移动到单独的文件中,但它可以让我更轻松地进行维护。
谢谢,
西蒙
答案 0 :(得分: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 %].
它有效,但我不推荐它。这是一个严重违反MVC原则的催化剂建立在上面。