【问题标题】:Using external template with Mojolicious::Lite将外部模板与 Mojolicious::Lite 一起使用
【发布时间】:2017-07-04 09:51:44
【问题描述】:

尝试使用HTMLTemplateProRenderer 插件 Mojolicious::Lite 这样我就可以使用HTML::Template样式的模板文件了。

问题是每个示例,甚至是文档,都只显示附加到脚本的模板文件。我需要将模板文件与 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>

【问题讨论】:

  • 如果你运行这个会发生什么?
  • 还有一个错字,你漏掉了'
  • 错误参数:/usr/local/lib64/perl5/HTML/Template/Pro.pm 第 198 行的预期文件名或标量引用。但是如何?那是我想不通的。
  • 您是否尝试添加文件扩展名?
  • 那不会有任何区别,我之前尝试过,Mojolicious::Lite,无需扩展即可处理它,我尝试使用的模块是问题出在“HTMLTemplateProRenderer”的地方我会联系作者,因为文档没有显示任何关于如何做到这一点的示例。

标签: perl templates mojolicious mojolicious-lite


【解决方案1】:

首先,模板路径的格式必须为&lt;name&gt;.&lt;format&gt;.&lt;handler&gt;。所以对于display/indexdisplay/index.html.tmpl

其次,HTMLTemplateProRenderer 的模板搜索路径是相对于应用主页的templatestemplates/&lt;controller&gt;。如果使用插件配置选项tmpl_opts =&gt; {use_home_template =&gt; 1},则应用主页。或添加到app-&gt;renderer-&gt;paths 的任何路径。

【讨论】:

    猜你喜欢
    • 2016-05-17
    • 1970-01-01
    • 2012-10-03
    • 2012-10-22
    • 2021-05-23
    • 2014-06-18
    • 1970-01-01
    • 1970-01-01
    • 2019-02-01
    相关资源
    最近更新 更多