Symfony2表单,收集类型(多对多)

时间:2012-12-29 14:41:36

标签: symfony doctrine-odm

我拥有什么

我有一个数据库表“团队”和一个表“玩家”,与Teams_has_Players表连接(多对多关系)。我生成了我的实体。我现在可以通过执行以下操作成功地从团队中检索玩家:$players = $team->getPlayers()->toArray();

我正在尝试做什么

我正在尝试创建一个表单,您可以在该表单上编辑该球队的所有球员名称及其位置。所以我基本上希望在每一行中有一些行,其中包含名称的输入字段和带有其位置的输入字段。

我试图做什么

所以我读了很多关于Symfony2 Collection类型的内容,并尝试了这个:

$form = $this->createFormBuilder(null)
    ->add('name', 'text', array('label' => 'Name', 'data' => $team->getName()))
    ->add('players', 'collection', array('data' => $team->getPlayers()->toArray()))
    ->getForm();

在我看来,我试过这个:

<ul>
    {% for player in form.players %}

        <li>
            {{ form_widget(player.name) }}{{ form_widget(player.position) }}
        </li>
    {% endfor %}
</ul>

但是我收到了这个错误:

  

表单的视图数据应该是标量,数组或类型   \ ArrayAccess的实例,但是是类的实例   MatchTracker \包\的appbundle \实体\播放器。您可以避免此错误   通过设置“data_class”选项   “MatchTracker \ Bundle \ AppBundle \ Entity \ Players”或添加视图   转换类实例的转换器   MatchTracker \ Bundle \ AppBundle \ Entity \ Players to scalar,array或an   \ ArrayAccess的实例。

所以我添加了'data_class' => 'MatchTracker\Bundle\AppBundle\Entity\Players',但后来我得到一个错误:表单的视图数据应该是类MatchTracker \ Bundle \ AppBundle \ Entity \ Players的实例,但是是(n)数组。您可以通过将“data_class”选项设置为null来避免此错误

任何可以帮我解决这个问题的人?我只想在一个表单中编辑球队的球员姓名/位置/ ..如果有效,我将扩展表格,以便add/remove players

1 个答案:

答案 0 :(得分:2)

相关问题