代码之家  ›  专栏  ›  技术社区  ›  Fluffy

如何检查细枝中的空值?

  •  260
  • Fluffy  · 技术社区  · 14 年前

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

    7 回复  |  直到 7 年前
        1
  •  484
  •   NikiC    13 年前

    根据具体需要:

    • is null 检查值是否为 null :

      {% if var is null %}
          {# do something #}
      {% endif %}
      
    • is defined 检查变量是否定义:

      {% if var is not defined %}
          {# do something #}
      {% endif %}
      

    另外, is sameas 对两个值进行类型严格比较的测试对于检查除 无效的 (像 false ):

    {% if var is sameas(false) %}
        {# do something %}
    {% endif %}
    
        2
  •  118
  •   dialogik    11 年前

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

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

    或者如果不希望它在为空时显示:

    {{ my_var | default("") }}
    
        3
  •  33
  •   Jamol    8 年前

    如果没有任何假设,答案是:

    {% if var is null %}
    

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

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

    可以缩短为:

    {% if var|default is null %}
    

    如果你不提供一个论点 default 过滤,它假设 无效的 (有点默认)。因此,检查变量是否为空(空、假、空字符串/数组等)的最短和最安全的方法(我知道):

    {% if var|default is empty %}
    
        4
  •  6
  •   Kendall Hopkins    14 年前

    我觉得你做不到。这是因为如果在twig模板中未定义(未设置)变量,它看起来像 NULL none (用细枝术语)。我很肯定这是为了防止模板中出现错误的访问错误。

    因为树枝上缺少“身份”( === )这是你能做的最好的

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

    也就是说:

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

    如果你擅长 type juggling 也就是说 0 , '' , FALSE , 无效的 ,未定义的var也会使该语句为真。

    我的建议是请求将身份信息实现到twig中。

        5
  •  5
  •   thepaulo    11 年前
         //test if varibale exist
         {% if var is defined %}
             //todo
         {% endif %}
    
         //test if variable is not null
         {% if var is not null %}
             //todo
         {% endif %}
    
        6
  •  3
  •   HamZa    12 年前

    您可以使用以下代码检查

    {% if var is defined %}
    
    var is variable is SET
    
    {% endif %}
    
        7
  •  2
  •   Nathan Arthur user2811108    7 年前

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

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