首页 文章

如何在Twig中检查null?

提问于
浏览
250

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

7 回答

  • 5

    根据您的具体需求:

    • is null检查值是否为 null
    {% if var is null %}
        {# do something #}
    {% endif %}
    
    {% if var is not defined %}
        {# do something #}
    {% endif %}
    

    此外,is sameas测试(对两个值进行类型严格比较)可能对检查 null 之外的值(如 false )感兴趣:

    {% if var is sameas(false) %}
        {# do something %}
    {% endif %}
    
  • 3

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

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

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

    {{ my_var | default("") }}
    
  • 113

    没有任何假设,答案是:

    {% 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 %}
    
  • 6

    我认为你不能 . 这是因为如果在树枝模板中未定义(未设置)变量,它看起来像 NULLnone (用树枝表示) . 我很确定这是为了抑制模板中发生的错误访问错误 .

    由于Twig( === )缺少"identity",这是你能做的最好的

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

    这意味着:

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

    如果你擅长type juggling,那意味着诸如 0''FALSENULL 和未定义的var之类的东西也会使该陈述成立 .

    我的建议是要求在Twig中实现身份 .

  • 472
    //test if varibale exist
         {% if var is defined %}
             //todo
         {% endif %}
    
         //test if variable is not null
         {% if var is not null %}
             //todo
         {% endif %}
    
  • 33

    您可以使用以下代码来检查是否

    {% if var is defined %}
    
    var is variable is SET
    
    {% endif %}
    
  • 2

    你也可以使用一行来做到这一点:

    {{ yourVariable is not defined ? "Not Assigned" : "Assigned" }}
    

相关问题