2013-03-08 7 views
11

Czy istnieje inteligentny sposób wyświetlania/używania zmiennej gałązki tylko wtedy, gdy istnieje?twig: wyświetlanie zmiennej tylko jeśli istnieje

Powiedz, mam strukturę:

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

i używam go w:

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

Chciałbym gałązkę pominąć desc.params jeśli nie istnieją odrębne wejście. Czy istnieje jakiś mądrzejszy sposób niż używanie instrukcji if?

Odpowiedz

16

Można po prostu przekazać mu domyślny pusty ciąg.

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

W ten sposób, jeśli nie jest zdefiniowany, jest to pusty ciąg. Możesz przeczytać więcej o domyślnym filtrem tutaj: http://twig.sensiolabs.org/doc/filters/default.html

+0

Można też po prostu użyć 'desc.params | default' (bez '('')'). – fritzmg

4

Innym rozwiązaniem jest ustawienie strict_variables false w was config.yml plik:

twig: 
    ... 
    strict_variables: false 
+2

Spowoduje to wyłączenie sprawdzania poprawności wszystkich zmiennych i może nadal być potrzebne w innym miejscu aplikacji. Po prostu korzystaj z tej opcji. – Chausser

+2

Chciałbym się ponownie wystrzegać, jeśli kiedyś nie wystarczy. Użycie '{{val | default ('')}}' jest łatwe. Myślę, że mamy dość późnych błędów w JavaScript. –

Powiązane problemy