Twig:在数组中包装变量(如果还没有),如果缺少则使用空数组

Twig:在数组中包装变量(如果还没有),如果缺少则使用空数组,twig,Twig,我有一个变量修饰符传递给几个小树枝模板。我希望能够完全不传递它,传递一个字符串,或者传递一个字符串数组。然后,我希望能够假设它在我的模板代码中总是一个字符串数组(可能是空的) 目前我已经在开始的小树枝模板 {% set modifier = modifier | default([]) %} {% if modifier is not iterable %} {% set modifier = [modifier] %} {% endif %} 这正是我想要的,但有更简单的方法吗?做一

我有一个变量
修饰符
传递给几个小树枝模板。我希望能够完全不传递它,传递一个字符串,或者传递一个字符串数组。然后,我希望能够假设它在我的模板代码中总是一个字符串数组(可能是空的)

目前我已经在开始的小树枝模板

{% set modifier = modifier | default([]) %}
{% if modifier is not iterable %}
    {% set modifier = [modifier] %}
{% endif %}

这正是我想要的,但有更简单的方法吗?做一些非常简单的事情需要大量的代码。

你可以用一行过滤器(但似乎无法模仿默认过滤器)


您可以测试
$value===null
,如果变量未定义,则会出现这种情况。我做了这件事,把它变成了一件好事。现在在twig中,我只需要
{%for someVar | wrapArray%}{{thing}{%endfor%}
中的东西{thing}{%endfor%}而不需要任何前导。但我真正希望的是一种简洁的方式,不用扩展就能做到这一点。因此,我将把这个问题留待更长的时间。
<?php
    $filter = new Twig_SimpleFilter('wrap_array', function ($value) {
        return is_array($value) ? $value : [ $value, ];
    });

    $twig = new Twig_Environment($loader);
    $twig->addFilter($filter);
{% set foo = foo|default({})|wrap_array %}