2014-07-24 66 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