7

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.

これは、「レンダリング」にパラメーターとして渡すものに関係なく発生します。これから有用なデバッグ情報を取得する方法がわかりません。しかし、私は以前にモジョを使用したことがありません。

ハンドラーが呼び出されているwarnことをいくつかのステートメントに振りかけることで確認しました。get

4

1 に答える 1

9

Mojolicious :: Plugin :: TtRenderer :: Engineのソースを見た後、私はそれを理解しました。プラグインは、Template Toolkitに渡されたオプションを無視し、代わりにからパスを取得します。したがって、コードを更新して次のものを含めます。INCLUDE_PATH$app->renderer_paths

app->renderer->default_handler( 'tt' );
app->renderer->paths( [ './tmpl' ] );

それを機能させます。

于 2012-10-12T18:23:42.553 に答える