0

我有 3 个实体:Person、Affiliation 和 PersonAffiliation。可以编辑此人,并可以添加或删除从属关系。

在我看来,我应该为每个现有的从属关系设置一个复选框,并且如果该人已经拥有该从属关系,则应选中该复选框。

我知道如何在视图(树枝)中显示所有从属关系,但我不知道如果该人已经拥有此从属关系,如何检查复选框。

下面是这两个表的样子:

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 回答