如何为Mojolicious注册渲染插件?

时间:2015-11-14 11:51:54

标签: perl mojolicious

我很难为Mojolicious工作制作渲染插件。 我的插件看起来像这样(现在):

package Mojolicious::Plugin::Renderer::XML;
use Mojo::Base 'Mojolicious::Plugin';

sub register {
    my ($self, $app, $conf) = @_;
    $app->renderer->add_handler('xml' => sub {
                    ${$_[2]} = 'say something';
                    return 1;
                } );
}
1;

在我的应用程序中:

plugin 'Renderer::XML';

以后

get '/x/xml' => sub {
    my $c = shift;
    $c->render( xml => 'bar' );
};

我可以看到插件被注册(转储renderer->handlers的列表,但看起来子甚至从未被调用(我插入调试输出来检查)。我尝试从应用程序内部做同样的事情如here所述,但没有结果。

有没有人比我有更好的线索?

1 个答案:

答案 0 :(得分:0)

查看Mojolicious::Renderer中的render子实施。您将看到已接受的数据类型是固定的。只有插件才能添加更多内容。

现在看看Mojolicious::Plugin::XML::Loy。他必须创建一个render_xml助手。够好了!