2014-07-24 65 views
0

我對應用程序使用Silex和Twig,並且我想使用Twig來隱藏或顯示基於方法調用的內容。我想就像一個自定義標籤:帶條狀條件的條件HTML塊

{{ 'foo'|check }} 
    <p>This will only be displayed if check passes</p> 
{{ endcheck }} 

...然後在其他地方的方法,如:

check($key) { 
    if($key === 'foo') { 
     ... 
    } else { 
     .... 
    } 
} 

...如果顯示HTML內容這將決定。

回答

1

據我所知,你會編程的方法:

check($key) { 
    if($key === 'foo') { 
     return true; 
    } else { 
     return false; 
    } 
} 

然後您的自定義過濾器將使用這樣的:

{% if 'foo'|check %} 
    <p>This will only be displayed if check passes</p> 
{% endif %} 

你只會用{{ }}直輸出(類似於PHP中的<?= ?>)。

+0

啊是的,對不起,我的意思是:{%'foo'|檢查%}東西{%endcheck%}。 – betandr

+0

@betandr好的很酷..那麼回答你的問題呢?我想知道你現在遇到了什麼問題。 – sjagr

0

你錯過了TWIG的觀點。 TWIG存在的主要原因之一是保持PHP不在模板中。所以,如果你有一些非常複雜的東西,那麼在將它傳遞給TWIG之前先處理這個數組,否則如果它像你所描述的那樣簡單,那麼就讓這個樹枝模擬那個功能。

{% if row.val == 'foo' %} 
    this will be displayed 
{% else %} 
    maybe you do not want anything displayed? 
{% endif %} 
+0

我相信OP希望[擴展Twig](http://twig.sensiolabs.org/doc/advanced.html#filters)。顯然,他不會在模板本身中保留PHP代碼。 – sjagr

+0

我試圖保持PHP模板!恕我直言'如果'在HTML中沒有任何地方,所以我想給一個標籤和一個值。 – betandr