Forms 带细枝的symfony2中实体的表视图

Forms 带细枝的symfony2中实体的表视图,forms,symfony,twig,Forms,Symfony,Twig,我一直在寻找各种类似的问题和答案,但没有一个能解决我的问题。我觉得我错过了一些明显的东西,因为这似乎是疯狂的简单和普通。无论如何: 我想构建一个表视图,用户可以从中选择实体进行进一步处理。显然,我需要显示的不仅仅是一个名称,我想添加大量数据 “实体”表单类型似乎是自然选择,因此我定义了一个表单类型,包括: $builder->add('items', 'entity', array( 'multiple'=>true, 'expanded'=&

我一直在寻找各种类似的问题和答案,但没有一个能解决我的问题。我觉得我错过了一些明显的东西,因为这似乎是疯狂的简单和普通。无论如何:

我想构建一个表视图,用户可以从中选择实体进行进一步处理。显然,我需要显示的不仅仅是一个名称,我想添加大量数据

“实体”表单类型似乎是自然选择,因此我定义了一个表单类型,包括:

    $builder->add('items', 'entity', array(
        'multiple'=>true,
        'expanded'=>true,
        'class'=>'MySiteBundle:Item', 'property'=>'name', 'query_builder'=>function(EntityRepository $er) use ($catagory) {
            return $er->createQueryBuilder('s')->where('s.category = :cat')->andWhere('s.available=true')->orderBy('s.name')->setParameters(array('cat'=>$category));
    }));
我想这会让我访问细枝中的实体。但无论我尝试什么,通过form.items.vars或.getvalue或其他24个类似问题的建议,都没有任何效果

我想要的只是一个带有项目数据名称、价格等的表,我不敢相信这会如此困难。我错过了什么简单而明显的东西


我需要使用表单,因为用户需要输入其他数据,我希望使用验证。

您无法从表单视图中访问实体类型后面的实体。因此,您需要在单独的查询中获取项目。为了简化此操作,请使项目数组的键与其ID相对应。如果将items数组发送到模板,则可以按如下方式输出:

<table>
    {% for item in form.items %}
        {% set id = item.get('value') %}
        <tr>
            <td>{{ form_widget(item) }}</td>
            <td>{{ items[id].name }}</td>
            <td>{{ items[id].category.name }}</td>
            <td>{{ items[id].available ? 'Yes' : 'No' }}</td>
            {# and so on ... #}
        </tr>
    {% endfor %}
</table>

谢谢,这是正确的方法。我想补充一点,使用索引关联使这一点非常容易实现。我不知道。很高兴知道!:如果您可以提供一个示例,使项数组的键与它们的id相对应,那就太好了。此外,如果您使用的是symfony 2.1或更高版本,那么您应该使用{%set id=item.vars['value']%}