2011-08-11 3 views
3

템플릿 툴킷에서 동적으로 생성 된 목록에있는 일부 항목을 필터링하려면 어떻게합니까? 나는 (동적으로 생성 된) ids 목록과 제외 될 ids 목록을 가지고 있으며, 제외되지 않은 ids 만 가져와야합니다. 가장 좋은 방법은 무엇입니까 ?? 샘플 코드 :템플릿 툴킷을 사용하여 목록의 항목 필터링

[% SET ids = [1,2,4,10,11,12,13,17,19,20,21,50,51] %] 
[% SET id_excluded = [10,11,13,20,50] %] 
[% FOREACH pid IN ids %] 
    [% IF ?code to filter the ids? %] 
     [% pid %] 
    [% END %] 
[% END %] 
+2

왜 통과 필터 해달라고 내용을 템플릿에? –

+0

지금은 실제로이 작업을 수행하고 있지만 처음에는 템플리트를 필터링하는 것이 었습니다. Perl에서는 스마트 매치 연산자 (~~)를 사용하여 그렇게하기가 쉬우 며 TT에서는 그렇게 쉽지 않습니다. 나는 대답을 찾으려고 노력했다. 그리고 didnt는 그렇게 여기에서 물었다 발견한다. – nsbm

+0

스마트 매치 운영자가 도입되었을 때 일반적으로 TT의 현재 버전 (2.x)이 perl 5.10 이전입니다. 하나는 일반적으로 pre-smart-match perl에서도 grep {} 구조를 사용했을 것입니다. – RET

답변

3

이 목록의 grep VMethod을 시도, 예를 들면 :

다음 생산
[% SET ids = [1,2,4,10,11,12,13,17,19,20,21,50,51] %] 
[% SET id_excluded = [10,11,13,20,50] %] 
[% FOREACH pid IN ids %] 
    [% UNLESS id_excluded.grep("^$pid\$").size %] 
     [% pid %] 
    [% END %] 
[% END %] 

:

1 2 4 12 17 19 21 51 
관련 문제