Подтвердить что ты не робот

Twig Array для преобразования строк

Это, вероятно, относительно легко сделать, но я новичок в ветке, и я расстроен.

Я адаптирую код из этого ответа: qaru.site/info/814314/...

массив создается в PHP в этом формате:

$link[] = array(
       'link' => 'http://example.org',
       'title' => 'Link Title',
       'display' => 'Text to display',
);

Затем через twig я добавляю html к нему перед тем, как он будет взят:

    <ul class="conr">
        <li><span>{{ lang_common['Topic searches'] }} 
        {% set info = [] %}
        {% for status in status_info %}
            {% set info = info|merge(['<a href="{{ status[\'link\'] }}" title="{{ status[\'title\'] }}">{{ status[\'display\'] }}</a>']) %}
        {% endfor %}

        {{ [info]|join(' | ') }}
    </ul>

Но я получаю:

Errno [8] Преобразование массива в строку в F:\localhost\www\twig\include\lib\Twig\Extension\Core.php в строке 832

Исправлено, когда я удаляю эту строку, но не отображается:

{{ [info]|join(' | ') }}

Любые идеи о том, как я могу правильно взорвать это?

** обновление **

Используя функцию дампа Twig, он ничего не возвращает. Кажется, он даже не загружает его в массив в первую очередь. Как загрузить информацию в новый массив.

4b9b3361

Ответ 1

Вы не должны создавать сложные структуры данных внутри шаблонов Twig. Вы можете достичь желаемого результата в более идиоматическом и читаемом виде следующим образом:

{% for status in status_info %}
    <a href="{{ status.link }}" title="{{ status.title }}">{{ status.display }}</a>
    {% if not loop.last %}|{% endif %}
{% endfor %}

Ответ 2

info - это массив, поэтому вам нужно просто написать

{{ info|join(', ') }}

чтобы отобразить ваш информационный массив.

[info] - массив с одним значением: информация о массиве.

Ответ 3

Вы можете использовать json_encode для сериализации массива как strig, а затем показать pretty - встроить веточку

    {{ array|json_encode(constant('JSON_PRETTY_PRINT')) }}