Что делает фильтр по умолчанию Twig, если не указан аргумент? - PullRequest
0 голосов
/ 22 января 2020

Я понимаю, как будет вести себя фильтр default, если его использовать следующим образом: items|default(posts)

Однако я наткнулся на некоторый код, где он использовался, но аргумент не был передан:

{% if ( posts|default ) %}


{% endif %}

Возможно, он на самом деле ничего не делает и является неполным или стандартным кодом, но я хотел проверить еще раз.

1 Ответ

1 голос
/ 23 января 2020

Не передавая никаких аргументов, фильтр 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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...