如何在独立的Perl脚本中使用Mojolicious渲染?

时间:2017-02-08 17:49:24

标签: perl mojolicious

我想在一个独立脚本中使用Mojolicious渲染引擎渲染.html.ep模板,该脚本发送电子邮件并从cron运行:

#!/usr/bin/perl

use feature ':5.10';

use Mojo::Base -strict;
use Mojolicious::Renderer;
use Data::Dumper;


my $renderer = Mojolicious::Renderer->new();
push @{$renderer->paths}, '/app/templates';

my $template = $renderer->get_data_template({
    template => 'template_name',
    format => 'html',
    handler => 'ep'
});

print Dumper($template) . "\n";

但是,$template始终未定义。

模板文件为/app/templates/template_name.html.ep

我做错了什么?

1 个答案:

答案 0 :(得分:10)

您正在使用Mojo :: Renderer中的get_data_template,它用于从当前源代码文件的__DATA__部分加载模板。

事实上,使用Mojo :: Renderer是错误的。您需要Mojo::Template,独立模板引擎作为模块。

use Mojo::Template;

my $mt = Mojo::Template->new( vars => 1 );
my $email_body = $mt->render_file( 'test.html.ep', { one => 1, two => 2 } );
say $email_body;

使用 test.html.ep

The magic numbers are <%= $one %> and <%= $two %>.

输出:

The magic numbers are 1 and 2.

option vars非常重要,因此它接受命名变量而不是参数列表。