我在myapp :: View :: TT.pm
上设置了包装器__PACKAGE__->config(
TEMPLATE_EXTENSION => '.tt2',
WRAPPER => 'wrapper.tt2',
INCLUDE_PATH => [ha->path_to('root', 'src'),],
render_die => 1,
TIMER => 0,
);
然后使用此内容创建wrapper.tt2
[% IF no_wrapper;
debug("Passing $template.name without any wrapper");
content;
ELSE;
wrapper = wrapper || 'site_wrapper.tt2';
debug("Applying $wrapper to $template.name");
content WRAPPER $wrapper;
END;
%]
然后,在管理员控制器中我写了
sub begin :Private {
my ($self, $c) = @_;
$c->stash( wrapper => 'admin/admin_wrapper.tt2');
}
这很好。
但是在根控制器中,我无法设置Wrapper并且没有包装器。 我有包装器site_wrapper.tt2,但我无法使用它。
在Root控制器中我有
sub begin :Private {
my ($self, $c) = @_;
$c->stash( wrapper => 'site_wrapper.tt2');
}
sub index :Path :Args(0) {
my ( $self, $c ) = @_;
# Hello World
$c->response->body( "ok" );
}
并且那只输出“ok”。 我怎样才能在Root上使用包装器?
感谢。
答案 0 :(得分:1)
通过将某些内容放入$ c-> response-> body(),您可以覆盖任何模板处理。就WRAPPER
指令而言,我认为你所做的事情本质上没有任何错误。
答案 1 :(得分:0)
试试这个
sub index :Path :Args(0) {
my ( $self, $c ) = @_;
$c->stash->{'template'}='some/whre/aTemplate.tt2';
$c->stash->{'message'}="Hello world";
$c->forward('View::TT')
}
我认为开始时不需要$c->stash( wrapper => 'site_wrapper.tt2');
。
配置视图后,您将创建的每个模板都将包含您的包装器。