如何使用短语法使用Twig检查变量是否存在以及是否为空

如果没有转储扩展, 那么Twig中变量的内容验证可能会非常困难。即使使用它, 有时你也会很懒惰, 并且会假设一些从PHP发送到Twig的变量的内容, 通常, 变量可以为空, 并且根据它, 你可能想做一些不同的事情, 例如打印其他文本等。开发人员习惯了空测试:

{# Or {% set variable = null %} as well #}{% set variable = "" %}{% if variable is empty %}The variable is empty.{% else %}The variable is not empty.{% endif %}

如果变量的值为空字符串或null, 则打印的文本将为” 变量为空” 。同样, 你可能要检查数组内的属性是否为空:
{# Or {% set variable = null %} as well #}{% set variable = {"name": "Carlos", "lastName": "Delgado"} %}{% if variable.name is empty %}The variable is empty.{% else %}The variable is not empty.{% endif %}

在这种情况下, 变量存在并且定义了名称键, 因此它将显示” 变量不为空” 。但是, 如果不存在要验证键是否存在的变量, 该怎么办?你可能需要扩展以下内容:
{% if variable is defined %}{% if variable.name is empty %}The variable is empty.{% else %}The variable is not empty.{% endif %}{% else %}The variable is not defined.{% endif %}

在这种情况下, 由于我们的变量不存在, 它将显示” 变量未定义或不为空” 。有点混乱, 不是很久吗?甚至忽略了你不想向用户显示未定义变量而是仅显示” 变量为空” 的消息。如果我告诉你有更简单的方法怎么办?使用默认过滤器!
使用默认过滤器使用默认过滤器, 你可以轻松地验证变量是否同时存在和不为空:
{% if variable.name|default %}The variable is not empty{% else %}The variable is empty.{% endif %}

在这种情况下, 过滤器将首先验证变量” variable” 是否存在, 如果存在, 则在这种情况下继续键名(如果存在且不为空), 则返回true, 因此将打印第一条消息。另一方面, 如果键存在但其值为空, 则条件将返回false:
{# Or {% set variable = null %} as well #}{% set variable = {"name": null, "lastName": "Delgado"} %}{% if variable.name|default %}The variable is not empty{% else %}The variable is empty.{% endif %}

在这种情况下将显示” 变量为空” 。要了解有关默认过滤器的更多信息, 请不要忘记阅读Twig网页上过滤器的官方文档。
【如何使用短语法使用Twig检查变量是否存在以及是否为空】编码愉快!

    推荐阅读