2013-03-08 53 views
11

只有在存在时才显示/使用小枝变量的智能方法?小枝:只有存在时才显示变量

说,我已经有了一个结构:

'opt1': {'visible': false, 'bundle': 'XxxBundle', 'name': 'label1'}, 
'opt2': {'visible': true, 'bundle': 'YyyBundle', 'name': 'label2', 'params': '/par1'}, 

,我使用它:

<a href="{{path(desc.bundle ~ '_' ~ action ~ desc.params)}}"> 

我想树枝,如果它不为明显存在省略desc.params条目。有没有比使用if声明更聪明的方法?

回答

16

您可以传递一个默认的空白字符串给它。

<a href="{{path(desc.bundle ~ '_' ~ action ~ desc.params|default(''))}}"> 

这种方式如果它没有定义它只是一个空字符串。你可以阅读更多关于过滤器的默认位置:http://twig.sensiolabs.org/doc/filters/default.html

+0

你也可以使用'desc.params | default'(不'('')')。 – fritzmg 2017-11-17 10:37:01

4

另一种解决方案是设置strict_variables为false你config.yml文件:

twig: 
    ... 
    strict_variables: false 
+2

这将关闭所有变量的验证,然后您可能仍然需要在应用程序的其他位置使用它。请注意,如果你使用这个选项。 – Chausser 2013-08-22 20:02:20

+2

如果一次还不够,我会再次提防。使用'{{val | default('')}}'很容易。我认为我们有足够的Javascript错误。 – 2016-02-18 13:01:40