0

Person、Affiliation、PersonAffiliation の 3 つのエンティティがあります。個人は編集可能で、所属を追加または削除できます。

私の見解では、既存のすべての所属にチェックボックスを付ける必要があり、その人がすでにこの所属を持っている場合はチェックボックスをオンにする必要があります。

ビュー(小枝)にすべての所属を表示する方法は知っていますが、その人がすでにこの所属を持っている場合にチェックボックスをオンにする方法がわかりません。

2 つのテーブルは次のようになります。

Person
    id
    firstname
    lastname
    ...
    affiliations

Affiliation
    id
    affiliation

PersonAffiliation
    id
    person_id
    affiliation_id

さて、私の質問は次のとおりです。これを行うためにコントローラーとビュー(小枝)を使用する可能性はありますか、それともJavascript(JQueryを使用)を使用することが唯一の可能性ですか?

4

1 に答える 1

1

プロキシ クラスを使用する代わりに、オブジェクトを次のように配置します。

Person
    id
    ... as before
Affiliation
    id
    .. as before
-- remove PersonAffiliation --

ただし、この関係を Person クラスに追加します

/**
 * @ManyToMany(targetEntity="Affiliation")
 * @JoinTable(name="person_affiliation",
 *      joinColumns={@JoinColumn(name="person_id", referencedColumnName="id")},
 *      inverseJoinColumns={@JoinColumn(name="affiliation_id", referencedColumnName="id")}
 *      )
 */

次のように、フォームビルダーですべてを実行できます。

    $builder
        ->add('person')
        ->add(
            'affiliation',
            'entity',
            array(
                'class'         => 'AcmeDemoBundle:Affiliation',
                'query_builder' => function($em) { return $em->createQueryBuilder('p')->orderBy('p.id', 'ASC'); },
                'property'    => 'affiliation',
                'multiple'    => true,
                'expanded'    => true,
                'required'    => false
            )
        );

そして、フォームをレンダリングするだけです

{{ form_widget(form) }}
于 2012-11-08T09:22:16.843 に答える