私が持っているもの
Teams_has_Playersテーブル(多対多の関係)に接続されたデータベーステーブル「Teams」とテーブル「Players 」があります。エンティティを生成しました。これで、次のようにしてチームからプレーヤーを正常に取得できます。$players = $team->getPlayers()->toArray();
私がやろうとしていること
チームのすべての選手名とフィールドでの位置を編集できるフォームを作成しようとしています。したがって、基本的に、各行に名前の入力フィールドと彼の場所の入力フィールドを含むいくつかの行が必要です。
私がやろうとしたこと
だから私はSymfony2コレクションタイプについてたくさん読んでこれを試しました:
$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に設定することで、このエラーを回避できます
この問題を解決するのを手伝ってくれる人はいますか?チームの選手名/場所/..をフォームで編集したいだけです。それがうまくいったら、フォームを拡張して、プレーヤーを追加/削除できるようにします。