2011-12-28 9 views
1

특정 템플릿 (actions.tt)에서 사용할 매개 변수를 반환하는 게시 경로가 있습니다. 해당 템플릿 내에서 DirectoryView 플러그인을 사용하여 디렉토리의보기 (dirmain.tt)로 div (jQuery 사용)를로드하고 있습니다. 내 문제는 기본 템플릿 (action.tt)을 렌더링하기 전에 DirectoryView 템플릿에 매개 변수를 전달해야한다는 것입니다. param (dev)은 디렉토리 목록에 포함되어야합니다.Perl Dancer, Dancer :: Plugin :: DirectoryView, 템플릿 툴킷 및 템플릿의 공유 매개 변수

펄 부분 :

Use Dancer; 
.... 
post "/" => sub { 
template 'actions.tt', { 
    'dev' => param('dev'), 
}; 

템플릿 :

.... 
how do I pass [% dev %] here before the action.tt is rendered by the browser? 
.... 

이 어떤 종류의 후크를 사용하여겠습니까이 이행

actions.tt

.... 
<div id="dir"> 
    <script type="text/javascript"> 
      $('#dir').load('/files/[% dev %]'); 
    </script> 
</div> 
.... 

dirmain.tt? 귀하의 도움을 많이 주시면 감사하겠습니다. 감사!

+0

"렌더링 됨"? 브라우저로? 또는'actions.tt'가 펄에 의해 컴파일되기 전에 (이것은별로 의미가 없을 것입니다)? 어쨌든 댄서는 모르지만 템플릿의'session-> uri()'에 접근하기를 원할 것입니다. (어떤 식 으로든 액세스 할 수 있도록 설정하십시오.) 어떤 이유로 작동하지 않는다면, 'load ('/ files/[% dev %]? x = [% dev %]')'를 요청하고'param "x"'를 사용할 때'dev '를 매개 변수로 사용합니다. 그냥 무작위적인 생각. – Qtax

+0

@Qtax 혼란스러운 부분을 편집했습니다. 팁을 주셔서 감사 드리며, DirectoryView 모듈에서 필자가 정의한 것을 정의하게되었습니다. 감사! – vpaterno

답변

2

params는 해시를 제공하는 함수이므로 params ("dev")는 아무 것도 얻을 수 없습니다.

template 'actions.tt', { 
    'dev' => param->{dev}, 
} 

하지만 Dancer에서는 params, request 및 session과 같은 일부 변수가 템플릿에서 기본적으로 내보내집니다. 따라서 '템플릿'을 비운 후에 {}를 그대로두고 템플릿에 사용하면됩니다.

$('#dir').load('/files/[% params.dev %]'); 
+0

팁 주셔서 감사! – vpaterno