Не передавая никаких аргументов, фильтр default
приведет к twig
, возвращающему пустую строку (''
). Также стоит отметить, что в twig
, если вы протестируете пустую строку, это приведет к false
.
Так что в этом случае, если переменная post
не определена, ложь или пустая строка фильтр вернет пустую строку, а if вернет значение false
, игнорируя код внутри блока кода
{% set foo = bar|default %}
{{ foo == '' ? 'empty string' : 'not an empty string' }}
{% if '' %}
Do something
{% else %}
Don't do anything
{% endif %}
--------------------------------
{% set var1 = false %}
{% set var2 = {} %}
{% if var1 | default %}
Do sthing with var1
{% else %}
Don't do anything with var1
{% endif %}
{% if var2 | default %}
Do sthing with var2
{% else %}
Don't do anything with var2
{% endif %}
{% if var3 | default %}
Do sthing with var3
{% else %}
Don't do anything with var3
{% endif %}
demo