2012-09-25 34 views
3

我在Twig中創建了一個過濾器,它在輸出周圍包裝了一些HTML。例如。創建一個樹枝過濾器,以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; 

,但你可以想像,我想這

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

輸出更換過濾器爲了喜歡

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

將工作上面的過濾器,但不是對於轉義過濾器,因爲它將自己始終放在過濾器隊列的末尾。它也應該與autoescape = true一起使用。

閱讀樹枝文檔,我無法找到一種標準的方式來做我想做的事。有人可能嘗試過類似的東西嗎?或者有人想出解決這個問題的辦法嗎?

在此先感謝!

回答

0

嘗試:

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

過濾器排在首位的內容,然後把它包。

+0

謝謝。問題在於e過濾器是一個例外,並將其自身始終放在過濾器隊列的末尾。我還希望使用autoescape = true的函數。 –

+0

但是,感謝您的輸入,我更新了上面的問題。 –

+0

OMG,SF2仍然令人驚歎......然後嘗試製作自己的轉義過濾器,但您必須明確地使用它,我不認爲SF2會讓您改變它的自動轉義方法,據我所知。 – S3Mi