在Twig中的单个字段中显示多个值

时间:2014-08-21 02:10:41

标签: symfony twig

我是Symfony2和Twig的新手。我想在一个字段中显示多个值。在我的表单中,我有一个“多次启用”的字段。

 ->add('name','choice', array(
        'expanded' => true,
        'multiple' => true,
        'label' => 'Job Done',
        'choices' => array('Wax' => 'Wax', 'Carwash' => 'Carwash','Interior Detailing' =>     'Interior Detailing', 'Exterior Detailing' =>'Exterior Detailing',
        'Full Detailing' => 'Full Detailing', 'Engine Wash' => 'Engine Wash', 'Engine Detailing' => 'Engine Detailing',
        )))

通过此设置,我可以将其成功保存在MYSQL数据库中。但是在Twig(index.html.twig)中,会弹出一个错误“注意:数组转换为字符串”。

{% for entity in entities %}
 <td>{{ entity.name }}</td>
 {% endfor %}

但如果我改为

{% for entity in entities %}
<td>{{ entity.name[0] }}</td>
{% endfor %}

只显示一个值。我想显示该字段的所有值。

在我的index.html.twig中,所有id都有多个值存储在其中。因为我选择了多个值。但它只显示每个id的一个值。

关于如何实现这一目标的任何想法?

3 个答案:

答案 0 :(得分:1)

正如您在错误消息中看到的那样,启用了multiple选项的选项字段将返回一个数组。因此,要在Twig中显示它,您需要像对待任何其他数组一样对待它。以下代码应该有效:

{% for entity in entities %}
    {% for name in entity.name %}
        <td>{{ name }}</td>
    {% endfor %}
{% endfor %}

答案 1 :(得分:1)

一个很好的Twig过滤器,用于将数组显示为字符串(如PHP函数implode所示):

{% for entity in entities %}
    <td>{{ entity.name|join(', ') }}</td>
{% endfor %}

以下是文档:http://twig.sensiolabs.org/doc/filters/join.html

答案 2 :(得分:0)

这是在树枝文件上打印多个值字段的另一种方法。

      {% for genre in node.field_genre %}{{ genre.entity.name.value|join(' ') }}{% endfor %}