我有一个数据库表“团队”和一个表“玩家”,与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。