我有的
我有一个数据库表“ 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 来避免此错误
谁能帮我解决这个问题?我只想在表格中编辑球队的球员姓名/位置/..。如果可行,我将扩展表单,以便添加/删除玩家。