TWIG:已定义且不为空

时间:2015-07-09 10:19:04

标签: symfony twig

快速提问 我有一个var,我想检查它是否已定义(以避免在渲染中出现错误)以及它是否为null(如果为null则显示带有Else的内容)

{% if var is not null %}有效

{% if var is defined %}有效

{% if var is not null and is defined %}不起作用 任何正确语法的想法?

编辑解决方法将是:

{% if var is defined %}
    {% if var is not null %}
        {{ var }}
    {% else %}
        blabla
    {% endif %}
{% endif %}

那么简单的代码很多......想法如何合并两个IF?

5 个答案:

答案 0 :(得分:15)

<强>错误

{% if var is not null and var is defined %}

这不起作用,因为在twig中为null的变量是定义的,但如果先检查null并且未定义它,则会抛出错误。

<强>正确

{% if var is defined and var is not null %}

这将起作用,因为我们检查它是否是第一个定义的,并且在没有的时候会出现。只有定义了变量,我们才检查它是否为空。

答案 1 :(得分:5)

您需要在每项检查中声明var {% if var is defined and var is not null %}

答案 2 :(得分:2)

就像任何其他编程语言一样,您仍需要为每次检查对变量进行引用。

{% if var is defined and not null %}

这不起作用,因为在定义了检查之后,twig不知道你试图检查什么是null。解决方案:

{% if (var is defined) and (var is not null) %}
... code
{% endif}

不一定需要括号。它更倾向于可读性。我希望这会有所帮助。

答案 3 :(得分:0)

我一直使用??当我知道可能未定义变量时,运算符提供“默认”值。因此{% if (var is defined and var is not null) %}等效于:

{% if (var ?? null) is not null %}

如果您只想检查可能未定义的值是否正确,则可以执行以下操作:

{% if (var ?? null) %}

答案 4 :(得分:0)

我用的这个短一些。它不是100%等于null测试,但适合我的用法。

{% if var is defined and var %}