2012-09-25 3 views
3

출력 주위에 일부 HTML을 래핑하는 필터를 Twig에서 만들었습니다. 예 :출력을 HTML로 랩핑하는 나뭇 가지 필터를 만듭니다.

{{ 'this is a "test"'|display }} 

출력

딜레마가
<div id="container"> 
    <div id="content"> 
    this is a "test" 
    </div> 
    <div id="toolbar"> 
    <a href="/edit.php">edit</a> 
    </div> 
</div> 

는, 그 이후의 필터는 전체 HTML에만 원본 콘텐츠를 도포하고,하지 싶다. 예 :

{{ 'this is a "test"'|display|upper|e }} 

출력

&LT;DIV ID=&QUOT;CONTAINER&QUOT;&GT; 
    &LT;DIV ID=&QUOT;CONTENT&QUOT;&GT; 
    THIS IS A &QUOT;TEST&QUOT; 
    &LT;/DIV&GT; 
    &LT;DIV ID=&QUOT;TOOLBAR&QUOT;&GT; 
    &LT;A HREF=&QUOT;/EDIT.PHP&QUOT;&GT;EDIT&LT;/A&GT; 
    &LT;/DIV&GT; 
&LT;/DIV&GT; 

그러나 당신이 상상할 수있는, 내가 일하는 것

{{ 'this is a "test"'|upper|e|display }} 

에 필터 순서 변경이

<div id="container"> 
    <div id="content"> 
    THIS IS A &QUOT;TEST&QUOT; 
    </div> 
    <div id="toolbar"> 
    <a href="/edit.php">edit</a> 
    </div> 
</div> 

같은 출력을 선호 상단 필터는 아니지만 이스케이프 필터는 항상 필터 대기열의 끝에 위치하므로 또한 autoescape = true로 작동해야합니다.

나뭇 가지 설명서를 읽으면서 원하는 방식으로 표준 방법을 찾을 수 없습니다. 누군가 비슷한 것을 시도했을까요? 아니면 누군가 문제를 해결할 아이디어가 있습니까?

미리 감사드립니다.

답변

0

시도 :

{{ 'this is a "test"'|upper|e|display }} 

은 처음에 콘텐츠를 필터링 한 후 포장.

+0

감사합니다. 문제는 e 필터가 예외이며 항상 필터 대기열의 끝에 위치한다는 것입니다. autoescape = true로 작동하는 함수도 좋겠다. –

+0

그러나 입력을 주셔서 감사합니다, 위의 질문을 업데이 트했습니다. –

+0

OMG, SF2는 여전히 저를 놀라게합니다 ... 그렇다면 자신의 도피 필터를 만들어보십시오.하지만 명시 적으로 사용해야 할 것입니다. SF2는 내가 읽은만큼 autoescaping 방법을 변경할 수 있다고 생각하지 않습니다. – S3Mi