2015-02-01 6 views
2

은 내 문서 foo.tt 나는이 같은 것을 쓰고 싶습니다노하우 통과 argumets

[% INCLUDE header('str', 1, 2, 3, 5, 10) %] 

내 목표는 STR에 대한 몇 가지 문자열 조작을하는 것입니다으로 예선/으로 모든 숫자를 반복합니다.

불행히도 템플릿 도구 키트에서 이러한 유형의 구문을 사용할 수 없습니다.

왜 템플릿 툴킷으로 인수를 서브 루틴으로 전달할 수 있습니까?

아이디어가 있습니까?

답변

4

변수는 전달할 수 있지만 이름을 지정해야합니다. 예 :

outer.tt2 :

[% INCLUDE header.tt2 header_string="str", items=[ 1, 2, 3, 5, 10 ] -%] 

header.tt2 :

String: [% header_string %] 
[% FOREACH item IN items -%] 
Item: [% item %] 
[% END -%] 

출력 :

String: str 
Item: 1 
Item: 2 
Item: 3 
Item: 5 
Item: 10 
+0

[% INCLUDE ... 줄 끝 부분의 "-"는 무엇을 의미합니까? – Eagle

+1

TT가 공백을 채우도록 지시합니다 : http://www.template-toolkit.org/docs/manual/Syntax.html#section_Chomping_Whitespace –

+0

@ysth, 파일의 접미사는 tt2입니까? 또는 접미사 tt를 가질 수 있습니까? – Eagle

1

체크 아웃 MACRO 정의 :

[% MACRO header(str, items) BLOCK -%] 
    [% FOREACH i IN items; -%] 
... your item code here ... 
    [% END -%] 
[% END -%] 

[% header('str',[1, 2, 3, 5, 10]) %] 

TT가 템플릿 수준에서 원시 인수 목록을 노출했다면 TT가 지정한대로 호출 할 수 있습니다 (예 : header('str', 1, 2, 3, 5, 10)). 그러나 이것은 매우 가깝습니다.