问题
I trying to output an array from the database to the screen. In my entity:
/**
* @ORM\Column(type="array", nullable=true)
*/
private $category;
In my twig template:
{% for category in user.profile.category %}
{{ category }}
{% endfor %}
Error: Array to string conversion in ...
Where is my mistake?
回答1:
TWIG doesn't know how you want to display your table.
By the way, you should consider naming your variable $categories
instead of $category
, as you table contains several categories.
Then try this:
{% for category in user.profile.categories %}
{{ category }}
{% endfor %}
If my answer doesn't help, please give us the structure of your array (is there any keys or sub-arrays in you table or is it just a list?)
回答2:
So, as error shows you are trying convert array (in category
variable) to string. You can preview array by dump()
(doc.). In your case:
{% for category in user.profile.category %}
{{ dump(category) }}
{% endfor %}
Please notice that dump()
should be use only for debugging.
回答3:
You can use join
to output an array as a concatenated string. It behaves like implode() in php.
Example:
{{ [1, 2, 3]|join }}
{# returns 123 #}
{{ [1, 2, 3]|join('|') }}
{# outputs 1|2|3 #}
{{ [1, 2, 3]|join(', ', ' and ') }}
{# outputs 1, 2 and 3 #}
See the twig join documentation.
回答4:
For anybody who want to output an associative array easily :
(here, the array is 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>
来源:https://stackoverflow.com/questions/26340115/output-array-in-twig