如何随机化数组中的项并循环它们?
{% for item in article.resources|shuffle|slice(1) %}
...
{% endfor %}
我收到此错误:
未知"随机播放"过滤" partials / content.twig"在第30行。
如果我使用random():
{% for item in random(article.resources|slice(1)) %}
什么都没有。
有什么想法吗?
备注:
我不想使用PHP btw。
答案 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);
在这里阅读更多相关信息
答案 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循环中保留一些检查以确保随机不会两次返回相同的项目。