Twig 细枝:仅当变量存在时才显示该变量

Twig 细枝:仅当变量存在时才显示该变量,twig,optional,Twig,Optional,是否有一种聪明的方法仅在存在细枝变量时才显示/使用它 我有一个结构: 'opt1': {'visible': false, 'bundle': 'XxxBundle', 'name': 'label1'}, 'opt2': {'visible': true, 'bundle': 'YyyBundle', 'name': 'label2', 'params': '/par1'}, 我把它用在: <a href="{{path(desc.bundle ~ '_' ~ action ~ des

是否有一种聪明的方法仅在存在细枝变量时才显示/使用它

我有一个结构:

'opt1': {'visible': false, 'bundle': 'XxxBundle', 'name': 'label1'},
'opt2': {'visible': true, 'bundle': 'YyyBundle', 'name': 'label2', 'params': '/par1'},
我把它用在:

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


我希望twig省略desc.params,如果它不存在于不同的条目中。有没有比使用
if
语句更聪明的方法呢?

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

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

另一种解决方案是在config.yml文件中将
严格变量设置为false:

twig:
    ...
    strict_variables: false

这将关闭所有变量的验证,然后您可能仍然需要在应用程序的其他位置使用它。如果你使用这个选项,请小心。如果一次还不够,我会再次小心。使用
{{val | default('')}
很容易。我认为Javascript的后期bug已经够多了。您也可以只使用
desc.params | default
(不使用
(“”)
)。