2012-10-12 2 views
6

템플릿 툴킷을 Mojolicious :: Lite의 기본 렌더러로 사용하려고합니다. 내가 가진 무엇 :템플릿 툴킷이있는 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. 

이 상관없이 나는 '렌더링'에 매개 변수로 전달할 무엇을 발생합니다. 유용한 디버깅 정보를 얻는 방법을 알아낼 수 없습니다. 하지만 전 모조를 사용하지 않았습니다.

get 처리기가 호출 중임을 나타내는 warn 문을 일부 뿌려서 확인했습니다.

+0

'TMPL_ROOT'은 (는)'INCLUDE_PATH'입니까? 'Template :: Toolkit'은 템플릿을 찾을 수 없다면 아무것도 렌더하지 않습니다. – RobEarl

+0

Ack, 예, 어디에서 TMPL_ROOT이 왔는지 확신 할 수 없습니다. (금요일이야.) 나는 아직도 같은 행동을보고있다. :( – friedo

답변

8

sourceMojolicious::Plugin::TtRenderer::Engine 인 것을보고 나서 알아 냈습니다. 플러그인은 템플릿 도구 키트로 전달 된 INCLUDE_PATH 옵션을 무시하고 대신 $app->renderer_paths에서 경로를 가져옵니다. 따라서 다음 코드를 포함하도록 코드를 업데이트하십시오.

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

이됩니다.

관련 문제