问答中心分类: PHP如何检查Twig中的null?
0
匿名用户 提问 1月 前

我应该使用什么构造来检查细枝模板中的值是否为NULL?

7 Answers
0
lax4mike 回答 1月 前

如何在细枝中设置默认值:http://twig.sensiolabs.org/doc/filters/default.html

{{ my_var | default("my_var doesn't exist") }}

或者,如果不希望在null时显示:

{{ my_var | default("") }}
Fluffy 回复 1月 前

那么它是否区分了undefined or emptynull?

mr-sk 回复 1月 前

似乎这是检查的正确方法。。。可惜它没有多少赞成票。

CTS_AE 回复 1月 前

这正是我想要的。必须确保您有| default,然后您可以尝试将其默认为另一个变量,如:{my_var | default(my_var2)}}我刚刚测试过,但您甚至可以继续这样链接:{{my_var | default(my_var2)| default(“my_var和my_var2不存在”)}

0
Jamol 回答 1月 前

没有任何假设,答案是:

{% if var is null %}

但只有当var确实是NULL,而不是计算为的任何其他值false(例如零、空字符串和空数组)。此外,如果var未定义。更安全的方法是:

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

可以缩短为:

{% if var|default is null %}

如果您不向default过滤器,假设NULL(有点默认)。因此,检查变量是否为空(null、false、空字符串/数组等)的最短和最安全的方法(我知道):

{% if var|default is empty %}
0
Kendall Hopkins 回答 1月 前

我认为你做不到。这是因为如果在细枝模板中未定义(未设置)变量,则它看起来像NULLnone(用树枝表示)。我很确定这是为了抑制模板中出现的错误访问。
由于在细枝中缺乏“身份”(===)这是你能做的最好的了

{% if var == null %}
    stuff in here
{% endif %}

也就是说:

if ((isset($context['somethingnull']) ? $context['somethingnull'] : null) == null)
{
  echo "stuff in here";
}

如果你擅长类型杂耍,意味着0,'',FALSE,NULL,一个未定义的var也将使该语句为真。
我的建议是要求将标识实现到细枝中。

Shabbyrobe 回复 1月 前

Kendall建议他们实现它是正确的——我除了要求在Twig的github问题跟踪器上实现一些东西之外,什么都没有。他们非常友好和专业。

noisebleed 回复 1月 前

@肯德尔·霍普金斯(kendall hopkins)很好奇,什么时候使用它合适{if var is none}PHP的等价物是什么?

Kendall Hopkins 回复 1月 前

@噪音出血{% if abcxyz is none %}变成if (isset($context["abcxyz"])) { $_abcxyz_ = $context["abcxyz"]; } else { $_abcxyz_ = null; } if ((null === $_abcxyz_)) { echo "hi"; }. 因此,基本上,如果值未定义或为null,则为true。

Kendall Hopkins 回复 1月 前

@也有噪音none是的别名null 裁判.

Will B. 回复 1月 前

与此答案等效的方法也是使用{% if var is empty %} 细枝sensiolabs。组织/文档/测试/空。html翻译成PHPif (empty($var))根据错误值进行计算(!isset, null, 0, array(), "", false, "0", 0.0)php。net/manual/en/function。空的php您也可以使用{% if var is same as(var) %}用于标识(===).细枝sensiolabs。组织/文档/测试/sameas。html

0
Javier Claros 回答 1月 前

您也可以使用一行来完成此操作:

{{ yourVariable is not defined ? "Not Assigned" : "Assigned" }}
0
thepaulo 回答 1月 前
//test if varibale exist
     {% if var is defined %}
         //todo
     {% endif %}

     //test if variable is not null
     {% if var is not null %}
         //todo
     {% endif %}
STT LCU 回复 1月 前

为什么你认为这个答案比目前公认的要好?

Artemix 回复 1月 前

欢迎使用StackOverflow!与已经接受的答案有什么不同?它过时了吗?为什么你的答案比现有的更好?

crmpicco 回复 1月 前

@STTLCU他包括if var is not null.