0

我在 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');
}

这很好用。

但是在根控制器中我无法设置包装器并且没有包装器。我有包装器 site_wrapper.tt2,但我不能使用它。

在根控制器中我有

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" );
    } 

那只是输出“好的”。如何在 Root 上使用包装器?

谢谢。

4

2 回答 2

1

通过将一些东西放入 $c->response->body(),您可以覆盖任何模板处理。WRAPPER就指令而言,我认为您所做的事情本质上没有任何问题。

于 2013-11-13T21:45:23.770 回答
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');一开始就不需要。配置视图后,您将创建的每个模板都将包含您的包装器。

于 2013-11-13T14:26:48.020 回答