2011-09-08 5 views
2

뷰 기본 디렉토리를 변경하지 않고 'app/views'디렉토리에없는 Dancer :: Plugin에서 템플릿을로드하려면 어떻게해야합니까? , 당신이 다음 템플릿을 호출하기 전에 views 설정을 설정을 변경해야 할 거라고 생각 현재댄서 플러그인 템플릿로드

package Dancer::Plugin::MyPlugin; 
use Dancer ':syntax'; 
use Dancer::Plugin; 

any '/test' => sub { 
    template '/path_to_template/test.tt' => { 
    }; 
}; 

register_plugin; 

1; 

답변

4

당신은를 부를 수 0 Dancer::Template 개체를 얻을

my $template_engine = engine 'template'; 
my $content = $template_engine->render('/path/to/template.tt', { 'name' => 'value' }); 

그런 다음, 기본 레이아웃에서 렌더링 된 내용을 반환하기 위해 render 방법, 예컨대 : 전화, apply_layout 전화 : 노력에 대한

return $template_engine->apply_layout($content); 
3

:

이 작동하지 않습니다은 /는 파일 경로 /로 기본보기 경로를 추가합니다 나중에 예를 들면 다음과 같습니다.

그러나 추한 것입니다.

은 내가 template 키워드 send_file가하는 많은처럼 system_path 옵션을받는 것이 나을 생각, 그래서 당신은 말할 수있다, 예를 들면 : 나는 이것에 대한 문제를 제기 한

template '/path/to/view.tt', $params, { system_path => 1 }; 

, 그리고 것 그것은 다음 릴리스 구현 얻기에 보면 : https://github.com/sukria/Dancer/issues/645

(공개 : 나는 댄서 dev에 팀의 일원이야)

+0

10Q를! ^^ 필자는 더 좋은 아이디어가 있다고 생각합니다 : 각 플러그인은 실제 'app'과 같은 'views'dir과 'public'dir을 가질 수 있습니다. 그렇습니까? – bliof