如何在Mojolicious中将结果传递给HTML?

时间:2017-11-13 17:28:17

标签: perl mojolicious

我需要传递结果 Mojo::mysql 到HTML中的$variable

#!/usr/bin/env perl

use Mojolicious::Lite;
use Mojo::mysql;

helper mysql => sub {
    state $pg = Mojo::mysql->new( 'mysql://mysql://sri:s3cret@localhost/db' )
};

get '/index' => sub {
    my $c  = shift;
    my $db = $c->mysql->db;
    $db->query( 'select now() as time' )->hash;
};

app->start;

__DATA__

@@ index.html.ep
<!DOCTYPE html>
<html>
<head><title><%= title %></title></head>
<body><%= $db %></body>
</html>`

我需要将$db的结果传递给索引,但我不知道如何做到这一点。

1 个答案:

答案 0 :(得分:3)

您从未呈现过index模板。为此,请在控制器上调用render方法。您的存储中的任何变量(或渲染函数的其他参数)都会转换为模板中的变量。

所以我们会有这样的事情:

get '/index' => sub {
    my $c  = shift;
    ...
    my $result = $db->query(...)->hash;
    return $c->render(template => 'index', result => $result);
};

...

__DATA__

@@ index.html.ep
<!DOCTYPE html>
<html>
<head><title><%= title %></title></head>
<body><%= dumper $result %></body>
</html>

(这里我使用了dumper助手,以便散列引用产生有用的输出,而不仅仅是HASH(0x123abc)。)

进一步阅读: