2017-02-15 5 views
2

пытается использовать HTMLTemplateProRenderer плагин для Mojolicious::Lite так, что я могу использовать файлы шаблонов в стиле HTML::Template.Использование внешнего шаблона с Mojolicious :: Lite

Проблема в том, что каждый пример, даже документация, показывает только файл шаблона, прикрепленный к скрипту. Мне нужно, чтобы файл шаблона находился в другом каталоге из кода 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

Плохие аргументы: ожидаемое имя файла или scalarref на /usr/local/lib64/perl5/HTML/Template/Pro.pm строке 198. Но как? То, что я не могу понять. – Maresia

ответ

1

Во-первых, путь шаблон должен быть в формат <name>.<format>.<handler>. Таким образом, для display/index является display/index.html.tmpl.

Во-вторых, пути поиска по шаблонам для HTMLTemplateProRenderer: templates и templates/<controller> относительно домашнего приложения. И приложение домой, если используется опция конфигурации плагина tmpl_opts => {use_home_template => 1}. Или любой путь добавлен к app->renderer->paths.

Смежные вопросы