Если я использую выражение Twig, например:
{% if a and function(a) %}
с ложью, твиг все еще оценивает function(a)
, или выражение будет оцениваться как false
не оценивая вторую часть? Аналогично с or
.
tl; dr: логические операторы Twig не оценивают вторую часть выражения «и», если первая часть ложна, аналогично «или», если первая часть является правдивой.
Как указывалось zerkms , это можно проверить , используя die.
Например:
{% if water_is_dry and die('water_is_wet') %}
не умрет, поскольку первое выражение, являющееся нулевым, ложно.
В то время как:
{% if water_is_dry or die('water_is_wet') %}
умрет.
Обратите внимание, что это работает, только если вы добавите функцию die в качестве функции для вашего экземпляра Twig, например:
$twig->addFunction(new Twig_SimpleFunction('die', 'die'));