Вывод массива в Twig

Я пытаюсь вывести массив из базы данных на экран. В моем существе:

/**
 * @ORMColumn(type="array", nullable=true)
 */
private $category;

в моих шаблонах:

{% for category in user.profile.category %}
    {{ category }}
{% endfor %}

ошибка: Array to string conversion in ...

где моя ошибка?

4 ответов


TWIG не знает, как вы хотите отобразить свою таблицу.

кстати, вы должны рассмотреть возможность именования переменных $categories вместо $category, поскольку таблица содержит несколько категорий.

тогда попробуйте следующее:

{% for category in user.profile.categories %}
   {{ category }}
{% endfor %}

Если мой ответ не поможет, пожалуйста, дайте нам структуру вашего массива (есть ли ключи или суб-массивы в вас настольный, или это просто список?)


Итак, как показывает ошибка, вы пытаетесь преобразовать массив (в category переменной) в строку. Вы можете просмотреть массив dump() (док.). В вашем случае:

{% for category in user.profile.category %}
    {{ dump(category) }}
{% endfor %}

Пожалуйста, обратите внимание, что dump() следует использовать только для отладки.


можно использовать join для вывода массива в виде конкатенированной строки. Он ведет себя как implode () в php.

пример:

{{ [1, 2, 3]|join }}
{# returns 123 #}

{{ [1, 2, 3]|join('|') }}
{# outputs 1|2|3 #}

посмотреть twig присоединиться к документации.


для тех, кто хочет легко вывести ассоциативный массив:

(здесь массив является пользователем.профиль.категория)

        <table>
            <tr>
                {% for key,value in user.profile.category[0] %}
                    <td>{{key|e }}</td>
                {% endfor %}
            </tr>

            {% for cat in user.profile.category %}
                <tr>
                    {% for cell in cat %}
                        <td>{{ cell|e }}</td>
                    {% endfor %}
                </tr>
            {% endfor %}
        </table>