Выходной массив в Twig
Я пытаюсь вывести массив из базы данных на экран. В моей сущности:
/**
* @ORM\Column(type="array", nullable=true)
*/
private $category;
В моей ветке шаблон:
{% for category in user.profile.category %}
{{ category }}
{% endfor %}
Ошибка: Array to string conversion in...
Где моя ошибка?
Ответы
Ответ 1
TWIG не знает, как вы хотите отображать таблицу.
Кстати, вы должны рассмотреть именование переменной $categories
вместо $category
, так как таблица содержит несколько категорий.
Затем попробуйте следующее:
{% for category in user.profile.categories %}
{{ category }}
{% endfor %}
Если мой ответ не поможет, сообщите нам структуру вашего массива (есть ли в вашей таблице какие-либо ключи или подмассивы или это просто список?)
Ответ 2
Итак, как показывает ошибка, вы пытаетесь преобразовать массив (в переменной category
) в строку. Вы можете просмотреть массив dump()
(doc.). В вашем случае:
{% for category in user.profile.category %}
{{ dump(category) }}
{% endfor %}
Обратите внимание, что dump()
следует использовать только для отладки.
Ответ 3
Вы можете использовать join
для вывода массива в виде объединенной строки. Он ведет себя как implode() в php.
Пример:
{{ [1, 2, 3]|join }}
{# returns 123 #}
{{ [1, 2, 3]|join('|') }}
{# outputs 1|2|3 #}
{{ [1, 2, 3]|join(', ', ' and ') }}
{# outputs 1, 2 and 3 #}
Смотрите документацию по соединению веток.
Ответ 4
Для тех, кто хочет легко получить ассоциативный массив:
(здесь массив - user.profile.category)
<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>