Mojolicious::Lite с набором шаблонов
Я пытаюсь заставить Template Toolkit работать как средство визуализации по умолчанию в Mojolicious::Lite. Что я имею:
use strict;
use warnings;
use Mojolicious::Lite;
use Mojolicious::Plugin::TtRenderer;
plugin tt_renderer => { template_options => { INCLUDE_PATH => './tmpl', DEBUG => 1 } };
get '/' => sub {
my $self = shift;
$self->render( 'index' );
};
app->renderer->default_handler( 'tt' );
app->start;
Когда я пытаюсь попасть на тестовый сервер, я получаю:
[Fri Oct 12 14:02:02 2012] [info] Listening at "http://*:3000".
Server available at http://127.0.0.1:3000.
[Fri Oct 12 14:02:08 2012] [debug] Your secret passphrase needs to be changed!!!
[Fri Oct 12 14:02:08 2012] [debug] GET / (Mozilla/5.0 (Macintosh; Intel Mac OS X 10.7; rv:16.0) Gecko/20100101 Firefox/16.0).
[Fri Oct 12 14:02:08 2012] [debug] Routing to a callback.
[Fri Oct 12 14:02:08 2012] [debug] Nothing has been rendered, expecting delayed response.
Это происходит независимо от того, что я передаю в качестве параметров для "рендеринга". Я не могу понять, как извлечь из этого полезную информацию для отладки; но я не использовал Mojo раньше.
Я подтвердил, посыпая в некоторых warn
заявления о том, что мой get
обработчик вызывается.
1 ответ
Решение
Посмотрев на источник ht tps://metacpan.org/module/Mojolicious::Plugin::TtRenderer::Engine, я понял это. Плагин игнорирует INCLUDE_PATH
опция передается в Template Toolkit и вместо этого получает путь от $app->renderer_paths
, Так что обновляя мой код, чтобы включить:
app->renderer->default_handler( 'tt' );
app->renderer->paths( [ './tmpl' ] );
заставляет это работать.