Условно отображать переменную ветки с запасным вариантом

Можно ли попытаться отобразить переменную и использовать запасной вариант, если она ложная?

Я пробовал следующее без везения:

<img src="{{ fields.icon.url || post.thumbnail.src }}" />

<img src="{{ fields.icon.url or post.thumbnail.src }}" />


person Jonny    schedule 17.01.2020    source источник
comment
А пока я использую это: {% set icon = fields.icon.url is not empty ? fields.icon.url : post.thumbnail.src %}   -  person Jonny    schedule 17.01.2020


Ответы (1)


Использование or приведет к тому, что результирующий вывод станет логическим значением 1 или 0.

Вместо этого вы можете использовать фильтр default.

Фильтр default возвращает переданное значение по умолчанию, если значение равно undefined или empty, иначе значение переменной:

Пример https://twigfiddle.com/hsniy6/2

<img src="{{ fields.icon.url|default(post.thumbnail.src) }}" />

В качестве альтернативы вы также можете использовать троичные операторы ?: или нулевой объединяющий оператор ??.

Тернарный оператор ?: эквивалентен is not empty.
Оператор объединения с нулевым значением будет работать, только если ведущая переменная равна undefined, null и эквивалентна is same as(null).

<img src="{{ fields.icon.url ?: post.thumbnail.src }}" />
<img src="{{ fields.icon.url ?? post.thumbnail.src }}" />
person Will B.    schedule 17.01.2020