17

我试图将一个数组从数据库输出到屏幕。在我的实体中:

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

在我的树枝模板中:

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

错误: Array to string conversion in ...

我的错误在哪里?

4

4 回答 4

27

因此,如错误所示,您正在尝试将数组(在category变量中)转换为字符串。dump()您可以通过( doc. )预览数组。在你的情况下:

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

请注意,它dump()只能用于调试。

于 2014-10-13T14:25:37.757 回答
21

您可以使用join将数组输出为连接字符串。它的行为类似于php 中的implode()

例子:

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

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

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

请参阅twig join 文档

于 2016-08-01T11:28:10.273 回答
8

TWIG 不知道您想如何显示您的表格。

顺便说一句,您应该考虑命名您的变量$categories而不是$category,因为您的表包含多个类别。

然后试试这个:

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

如果我的回答没有帮助,请告诉我们您的数组结构(您的表中是否有任何键或子数组,或者它只是一个列表?)

于 2014-10-13T14:26:58.980 回答
-1

对于任何想要轻松输出关联数组的人:

(这里,数组是 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>
于 2018-01-18T15:49:01.187 回答