2013-03-08 2 views
11

Есть ли разумный способ отображения/использования переменной веточки, только если она существует?twig: отображаемая переменная, только если она существует

Скажем, у меня есть структура:

'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

4

Другим решением является установить strict_variables к ложным в вас config.yml файл:

twig: 
    ... 
    strict_variables: false 
+2

Это отключит проверку для всех переменных, и вам все равно может понадобиться это в другом месте вашего приложения. Просто будьте осторожны, если вы используете эту опцию. – Chausser

+2

Я бы остерегался еще раз, если вам некогда. Использование '{{val | default ('')}}' легко. Я думаю, что у нас есть достаточно поздних ошибок с Javascript. –

Смежные вопросы