如何随机化数组中的项目并循环它们?
{% for item in article.resources|shuffle|slice(1) %}
...
{% endfor %}
我收到此错误:
第 30 行“partials/content.twig”中的未知“shuffle”过滤器。
如果我使用random():
{% for item in random(article.resources|slice(1)) %}
没有任何回报。
有什么想法吗?
注意事项:
我不想使用 PHP 顺便说一句。
做类似的事情:
$twig = new Twig_Environment($loader);
$function = new Twig_SimpleFunction('shuffle', function ($array) {
shuffle($array);
return $array;
});
$twig->addFunction($function);
在这里阅读更多相关信息
我使用了 Twig Array Extension 来利用
|shuffle
。在我的安装中,扩展未加载。
将此添加到我的 config/services.yml 的服务下:
services:
twig.extension.array:
class: Twig_Extensions_Extension_Array
tags: [twig.extension]
然后你可以使用:
{% for item in items|shuffle %}
...
{% endfor %}
我知道这是一个老问题,但由于 Twig ArrayExtensions 似乎已被贬值,我想提供一种不带任何扩展的替代方法:
{% for item in article.resources|sort((a,b) => random(-1,1)) %}
...
{% endfor %}
我认为你必须删除它的切片部分。
尝试此代码并让我知道这是否有效。
{% for item in random(article.resources) %}
{% endfor %}
您可能希望在 for 循环中进行一些检查,以确保随机不会两次返回相同的项目。