Twig - 如何随机化数组中的项并循环它们?

时间:2016-11-16 10:13:10

标签: php arrays twig twig-filter

如何随机化数组中的项并循环它们?

{% for item in article.resources|shuffle|slice(1) %}
    ...
{% endfor %}

我收到此错误:

  

未知"随机播放"过滤" partials / content.twig"在第30行。

如果我使用random()

{% for item in random(article.resources|slice(1)) %}

什么都没有。

有什么想法吗?

备注:

我不想使用PHP btw。

4 个答案:

答案 0 :(得分:4)

Twig Array Extension已经有一个shuffle()过滤器(based上的shuffle()

答案 1 :(得分:2)

做类似的事情:

$twig = new Twig_Environment($loader);
$function = new Twig_SimpleFunction('shuffle', function ($array) {
    shuffle($array);
    return $array;
});
$twig->addFunction($function);

在这里阅读更多相关信息

http://twig.sensiolabs.org/doc/advanced.html#functions

答案 2 :(得分:1)

我使用Twig Array Extension来使用|shuffle。在我的安装中,未加载扩展。

将此添加到我的config / services.yml,在services:

services:
    twig.extension.array:
                class: Twig_Extensions_Extension_Array
                tags: [twig.extension]

然后你可以使用:

{% for item in items|shuffle %}
    ...
{% endfor %}

答案 3 :(得分:0)

我认为你必须删除它的切片部分。

试试这段代码,如果有效,请告诉我。

{% for item in random(article.resources) %}

{% endfor %}

您可能希望在for循环中保留一些检查以确保随机不会两次返回相同的项目。