如何在数组中随机化项目并循环它们


Twig - How to randomise items in the array and loop them?

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

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

我得到这个错误:

在"partials/content"中未知的"shuffle"过滤器。

如果我使用random():

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

不返回任何内容。

任何想法?

指出:

Twig Array Extension已经有一个shuffle()过滤器(基于PHP shuffle())

像这样做:

$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函数

我使用了树枝数组扩展,以利用|shuffle。在我的安装扩展没有加载。

添加到我的配置/服务。Yml,在services下:

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

那么你可以使用:

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

我认为你必须去掉它的一部分。

试试这个代码,让我知道这是否有效。

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

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