1

我有的

我有一个数据库表“ Teams ”和一个表“ Players ”,它们与一个 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\Bundle\AppBundle\Entity\Players 类的实例。您可以通过将“data_class”选项设置为“MatchTracker\Bundle\AppBundle\Entity\Players”或添加一个视图转换器来将 MatchTracker\Bundle\AppBundle\Entity\Players 类的实例转换为标量、数组或\ArrayAccess 的一个实例。

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

谁能帮我解决这个问题?我只想在表格中编辑球队的球员姓名/位置/..。如果可行,我将扩展表单,以便添加/删除玩家

4

1 回答 1

2

这就是您正在尝试做的事情。

于 2012-12-29T17:37:22.793 回答