2017-02-15 35 views
2

嘗試使用HTMLTemplateProRenderer插件 Mojolicious::Lite ,這樣我可以在HTML::Template樣式使用的模板文件。使用外部模板,Mojolicious ::精簡版

問題是,每個示例甚至文檔都只顯示附加到腳本的模板文件。我需要將模板文件放在與Perl代碼不同的目錄中。

這是我正在嘗試做的一個示例。

這個工程使用__DATA__,但它怎麼可能通過使用外部模板文件作爲這方面的工作:

#!/usr/bin/env perl 

use Mojolicious::Lite; 

plugin 'HTMLTemplateProRenderer'; 

# Route leading to an action that renders a template 
get '/test' => sub { 
    my $c = shift; 

    $c->stash(one => 'This is result one'); 

    $c->render(
     template => 'display/index', 
     two  => 'this is the second', 
     handler => 'tmpl' 
    ); 
}; 

app->start; 

模板文件是display/index.tmpl

<html> 
    <head><title>Test Template</title> 
    <body> 
    <p>Value ONE = <TMPL_VAR NAME="one"> </p> 
    <p>Value TWO = <TMPL_VAR NAME="two"> </p> 
    </body> 
</html> 
+0

如果你運行這個,會發生什麼? – simbabque

+0

還有一個錯字,你錯過了一個'''。 – simbabque

+0

錯誤的參數:在/usr/local/lib64/perl5/HTML/Template/Pro.pm第198行預期的文件名或scalarref。但是如何?那是我無法弄清楚的。 – Maresia

回答

1

首先,模板路徑必須是格式爲<name>.<format>.<handler>。因此對於display/indexdisplay/index.html.tmpl

其次,HTMLTemplateProRenderer的模板搜索路徑是templatestemplates/<controller>相對於應用程序主頁。和應用程序主頁如果使用插件配置選項tmpl_opts => {use_home_template => 1}。或者添加到app->renderer->paths的任何路徑。