Как создать массив в цикле for в Liquid?

Я пытаюсь создать массив из списка объектов с использованием синтаксиса Liquid:

{% for operation in menuItems %}
      {% assign words1 = operation.Title | split: '_' %}
      {% assign controllerName = words1 | first %}
      {% assign controllersTmp = controllersTmp | append: '_' | append: controllerName %}
{% endfor %}

Я хочу разделить controllersTmp, чтобы получить свой массив, но на данный момент мой controllersTmp пуст.

Любая помощь ?


person Maroine Abdellah    schedule 21.12.2016    source источник


Ответы (3)


Вы можете напрямую создать новый пустой массив controllers и добавить к нему concat ваш controllerName преобразован в массив с помощью временного решения split:''. Результатом является непосредственно массив без дополнительных манипуляций со строками.

{% assign controllers = '' | split: '' %}
{% for operation in menuItems %}
    {% assign controllerName = operation.Title | split: '_' | first | split: '' %}
    {% assign controllers = controllers | concat: controllerName %}
{% endfor %}
person jrbedard    schedule 21.12.2016
comment
Мариан, это работало в шаблоне управления API согласно запросу? Я пытался сделать то же самое, но похоже, concat не может быть использован - person Nicolas R; 08.01.2018
comment
Если controllerName не является самим массивом (что, я не думаю, будет в вопросе OP), вам нужно будет использовать append в последнем назначении. И вы можете пропустить разделение в первом задании. - person relizt; 02.09.2020

Что сработало для меня

{% assign otherarticles = "" | split: ',' %}
{% assign software_engineering = "" | split: ',' %}

{% for file in site.static_files %}
  {% if file.extname == ".html" %}
    {% if file.path contains "software_engineering" %}
       {% assign software_engineering = software_engineering | push: file %}
    {% else %}
      {% assign otherarticles = otherarticles | push: file %}
    {% endif %}
  {% endif %}
{% endfor %}

person Alex Punnen    schedule 05.06.2020

вам нужно запустить переменную controllersTmp:

 {% assign controllersTmp = '' %}
person Maroine Abdellah    schedule 21.12.2016