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