Как я могу рандомизировать элементы в массиве и зациклить их?
{% for item in article.resources|shuffle|slice(1) %}
...
{% endfor %}
Я получаю эту ошибку:
Неизвестный фильтр «shuffle» в файле «partials / content.twig» в строке 30.
Если я использую случайным образом ():
{% for item in random(article.resources|slice(1)) %}
Ничего не возвращается.
Есть идеи?
ЗАМЕТКИ:
Я не хочу использовать PHP, кстати.
прут Расширение массива уже есть shuffle()
фильтр (основан на PHP shuffle()
)
Сделайте что-нибудь подобное:
$twig = new Twig_Environment($loader);
$function = new Twig_SimpleFunction('shuffle', function ($array) {
shuffle($array);
return $array;
});
$twig->addFunction($function);
Об этом подробнее здесь
Я думаю, вам придется удалить часть его части.
Попробуйте этот код и дайте мне знать, если это работает.
{% for item in random(article.resources) %}
{% endfor %}
Вы, вероятно, хотели бы сохранить некоторую проверку в цикле for, чтобы функция random не возвращала один и тот же элемент дважды.
Я использовал веточку Расширение массива, использовать |shuffle
, На моей установке расширение не было загружено.
Добавил это в мой config / services.yml, в разделе services:
services:
twig.extension.array:
class: Twig_Extensions_Extension_Array
tags: [twig.extension]
Тогда вы можете использовать:
{% for item in items|shuffle %}
...
{% endfor %}