Twig только показывает первый уровень массива - PullRequest
1 голос
/ 18 апреля 2020

Я впервые задаю вопрос на форуме. Я обычно использую лезвие для шаблонов, но отдельную веточку проще установить. Итак, у меня есть эта проблема здесь, я надеюсь, что вы можете мне помочь.

$breadcrums['titles'] = ['Home','Toys','Ball'];
$breadcrums['links'] = ['/','/toys','/toys/ball'];


{% for item in breadcrums %}

<a href={{ item.links }}> {{ item.titles }} </a>

{% endfor %}

Я пытаюсь добиться чего-то подобного, но код ничего не печатает. С другой стороны, если сделать это:

{% for value in breadcrums.titles %}
{{ value }}
{% endfor %}

работает нормально, но не то, что я пытаюсь сделать. Спасибо

1 Ответ

1 голос
/ 18 апреля 2020

Я предлагаю вам изменить $breadcrumbs на

$breadcrumbs = [
    'Home' => '/',
    'Toys' => '/toys',
    'Ball' => '/toys/ball'
];

Это сделает ваш массив более читабельным, вы сможете легко увидеть заголовок и связанную с ним ссылку (вместо двух «не связанных» массивов).

В своем шаблоне ветки вы можете использовать:

{% for title,link in breadcrumbs %}
<a href="{{ link }}">{{ title }}</a>
{% endfor %}

Решение для большего количества атрибутов:

Если вы хотите добавить больше атрибутов в свои хлебные крошки, вы можете использовать что-то вроде:

$breadcrumbs = [
    [
        'title' => 'Home',
        'url' => '/',
        'atitle' => 'Link to the home page'
    ],
    [
        'title' => 'Toys',
        'url' => '/toys',
        'atitle' => 'Every toy you can imagine'
    ],
    [
        'title' => 'Ball',
        'url' => '/toys/ball',
        'atitle' => 'Ballroom blitz'
    ]
];

В файле ветки вы затем используете:

{% for breadcrumb in breadcrumbs %}
  <a href="{{ breadcrumb.url }}" title="{{ breadcrumb.atitle }}">{{ breadcrumb.title }}</a>
{% endfor %}

Будет выводиться:

<a href="/" title="Link to the home page">Home</a>
<a href="/toys" title="Every toy you can imagine">Toys</a>
<a href="/toys/ball" title="Ballroom blitz">Ball</a>
...