快速提问 我有一个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?
答案 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 %}