Twig:如果不是已经在数组中包装变量,如果缺少则使用空数组

时间:2016-03-05 01:27:46

标签: twig

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

目前我在枝条模板的开头

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

这就是我想要的,但有更简单的方法吗?做一些非常简单的代码需要很多代码。

1 个答案:

答案 0 :(得分:1)

您可以使用过滤器对其进行单行处理(但似乎无法模仿默认过滤器)

<?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 %}