在树枝

时间:2015-12-12 06:00:51

标签: twig

我有这个数组:

$modules = array(
    'users',
    'submodule' => array(
        'submodule1',
        'submodule2',
    ),
);

我的问题是如何访问所有值并在html上显示?

我尝试过以下但没有运气:

{% for key, module in modules  %}
        {% if modules.key is iterable %}
              {{ module }}
        {$ else %}
            {{ module }}
        {% endif %}
    {% endfor %}

谢谢!

1 个答案:

答案 0 :(得分:1)

如果你的阵列只有2级,你可以做一些接近你所做的事情:

body

会给你(根据你给出的背景):

{% for module in modules %}
  {% if module is iterable %}
    {% for submodule in module %}
    <p>{{ submodule }}</p>
    {% endfor %}
  {% else %}
  <p>{{ module }}</p>
  {% endif %}
{% endfor %}

请参阅fiddle

但是如果你的数组有任意数量的级别,你应该使用宏做一些递归:

<p>users</p>
<p>submodule1</p>
<p>submodule2</p>

使用以下上下文(采用YAML格式):

{% macro show_array(array) %}

    {% from _self import show_array %}
    {% for module in array %}

        {% if module is iterable %}
            {{ show_array(module) }}
        {% else %}
            <p>{{ module }}</p>
        {% endif %}

    {% endfor %}

{% endmacro %}

{% from _self import show_array %}
{{ show_array(modules) }}

这会给你:

modules:
  0: users
  submodule:
      0: submodule1
      1: submodule2
      subsubmodule:
        0: subsubmodule1
        1: subsubmodule2

请参阅fiddle