2012-05-07 150 views
0

我想知道是否有人知道如何聯模板在催化劑模塊的數據部分(我想使用模板工具包),喜歡它在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 %>. 

它使維護更容易,因爲我代碼,雖然我可能會稍後將所有內容移動到單獨的文件。

感謝,

西蒙娜

回答

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