Вывод массива в 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>