2014-03-05 2 views
0

나는 여전히 TT에 상당히 익숙하다. 그래서 내가 묻는 것은 의미가없고 불가능할 수도있다. 그렇다면 나는 다른 방법을 찾을 것이다. 기본적으로 FOREACH 루프를 사용하여 배열을 돌린다. 변수를 만들고 테이블을 만들면 잘 작동하지만 본질적으로 섹션 헤더를 추가하려고합니다. 여기에 문제가 있습니다. 배열에 section ('string')이 있으면 그 문자열을 어떻게 인쇄 할 수 있습니까?TT 배열의 변수에 문자열을 출력하는 방법은 무엇입니까?

내 코드 예를 들어 보겠습니다.

데이터 배열을 구축

content_list=[ 

      section('First Section'),"somecontent","some_other_content", 

      section('Second Section'), "somecontent", "some_other_content" 
] 

빌드 코드

<table> 

    [% FOREACH entry IN content_list %] 

     [% IF entry == section %] 
     <tr> 
      <th> [% #this needs to output the string, ie 'First Section' %]</th> 
     </tr> 
     [% END %] 

     <tr> 
      <td>The content is: [% entry %]</td> 
     </tr> 

    [% END %] 

</table> 

항목 = 부와이 일을 인쇄 할 때 인식합니다,하지만 난 그것을 얻을 방법을 알아낼 수 없습니다 섹션에 포함 된 문자열을 인쇄 하시겠습니까? 어떤 도움을 많이 주시면 감사하겠습니다!

정확히 arrayref에서 section(arg) 무엇

답변

0

(I가 아마 더 쉽고 논리적 인 방법이 주위의 그러나 이것은 변경해야 코드의 큰 조각의 작은 조각 롤을 깨닫게)? 이 코드는 TT 매크로입니까 아니면 예제 의사 코드입니까?

전체 내용을 다시 작성하지 않으셔서 고맙습니다. 나중에

content_list=[ 
    { section => 'First Section' }, "somecontent", "some_other_content", 
    { section => 'Second Section' }, "somecontent", "some_other_content" 
]; 

과 : 그것은 가능한이 그들이 즉, 어떤 것을 나중에 식별을 허용하는 방식으로 섹션 헤더를 은닉하는 것입니다

[% IF entry.section %] 
    <tr> 
     <th> [% entry.section %]</th> 
    </tr> 
    [% END %] 

을이 길을 갈 경우, 즉, 작은 hashrefs에 배열의 모든 요소를 ​​돌려 고려할 수 있습니다 :

content_list = [ 
    { content => 'First Section', section=>1 }, { content => "somecontent" }, 
    { content => "some_other_content" }, { content => 'Second Section', section=>1 }, 
    { content => "somecontent" }, { content => "some_other_content", some_flag=>1 } 
]; 

다음 각 entry IN content_list가 맞는 고유의 특성을 가진 객체가 될 수 있습니다.

[% SET header = { 'First Section' => 1, 'Second Section' => 1, ... }; %] 

나중에 :

[% IF header.$entry %] 
    <tr> 
     <th>[% entry %]</th> 
    </tr> 


또 다른 방법은 조금 당신이 헤더가 알고있는 콘텐츠 항목의 해시, 그들에 대한 테스트, 즉를 생성하는 것입니다

+0

그 첫 번째 제안은 완벽하게 작동했습니다 :) 원래 섹션 코드는 TT 매크로 였지만 다른 방법을 시도하고 있습니다. 이 프로젝트를위한 테이블을 작성하는 것이 더 유연하고 사용자가 쉽게 구현할 수 있어야합니다. 감사합니다. RET : DI는 어레이를 작은 해시 레프로 바꾸는 것에 대한 제안에 감사하지만, t는 필요하지만 나는 그것을 명심해야한다;) 나는 당신의 대답을 upvote 하겠지만 나는 충분한 명성을 얻지 못했다. – Dicko

+0

고마워. TT의 가장 큰 장점 중 하나는 예를 들어 DBIx :: Class 데이터 행과 같은 객체의 배열 참조를 완벽하게 처리하는 기능입니다. 프로젝트에 행운을 빈다. – RET