1

私が持っているもの

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に設定することで、このエラーを回避できます

この問題を解決するのを手伝ってくれる人はいますか?チームの選手名/場所/..をフォームで編集したいだけです。それがうまくいったら、フォームを拡張して、プレーヤーを追加/削除できるようにします。

4

1 に答える 1

2

これはあなたがやろうとしていることです。

于 2012-12-29T17:37:22.793 に答える