0

我正在尝试显示扩展的实体字段类型并将多个设置为 true。但是,我想显示实体的其他属性。这类似于Symfony2 :使用实体字段类型访问 Twig 中的实体字段,但该解决方案对我不起作用。我收到错误消息:“”的项目“代码”不存在。

如何访问实体的其他属性(在这种情况下为颜色)?

这是我到目前为止所拥有的:

$builder->add('colors', 'entity', array(
            'class' => 'PrismPortalCommonBundle:Color',
            'property' => 'code',
            'expanded' => true,
            'multiple' => true,
        ));

在树枝模板中:

{% for color in form.colors %}
<tr>
  <td>{{ form_widget(color) }}</td>
  <td>{{ color.vars.data.code }}</td>
</tr>
{% endfor %}
4

1 回答 1

0

在 Symfony 2.5 中 - 您可以通过使用子索引值访问每个选项的数据来完成此操作。

在表单生成器中 - 正如您所料:

public function buildForm(FormBuilderInterface $builder, array $options)
{
    // Generate form
    $builder
        ->add('child', 'entity', array(
            'class'         => 'MyBundle:Child',
            'label'         => 'Children',
            'property'      => 'any_property_for_label',
            'expanded'      => true,
            'multiple'      => true
        ));
}

在 Twig 模板中:

{{ form_start(form) }}
{% for child in form.child %}
    {% set index = child.vars.value %}{# get array index #}
    {% set entity = form.child.vars.choices[index].data %}{# get entity object #}
    <tr>
        <td>{{ form_widget(child) }}</td>{# render checkbox #}
        <td>{{ entity.name }}</td>
        <td>{{ entity.email }}</td>
        <td>{{ entity.otherProperty }}</td>
    </tr>
{% endfor %}
{{ form_end(form) }}
于 2014-09-30T22:58:12.183 回答