我有3个实体:Person,Affiliation和PersonAffiliation。 可以编辑此人,可以添加或删除附属关系。
在我看来,我应该为每个现有的联盟设置一个复选框,如果该人已经具有此联盟,则应选中复选框。
我知道如何在视图(树枝)中显示所有从属关系,但我不知道如果该人已经具有此关联,我将不知道如何选中复选框。
以下是两个表的外观:
Person
id
firstname
lastname
...
affiliations
Affiliation
id
affiliation
PersonAffiliation
id
person_id
affiliation_id
现在,我的问题是:是否有可能使用控制器和视图(twig)来执行此操作,或者唯一的可能是使用Javascript(使用JQuery)?
答案 0 :(得分: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) }}