エンティティフォームフィールドを使用して、多対多の関係を簡単に管理できます。たとえばUser
、との多対多の関係としてGroup
、ビルダーに追加するだけです。
$builder->add('groups', 'entity', array(
'multiple' => true, // Multiple selection allowed
'expanded' => true, // Render as checkboxes
'property' => 'name', // Assuming that the entity has a "name" property
'class' => 'Acme\HelloBundle\Entity\Group',
);
これにより、関連付けられているエンティティがマーク(チェックされている)され、関連付けられていないエンティティがマークされていないチェックボックスリストが生成されます。設定expanded
するfalse
と、選択要素(複数)としてレンダリングできます。
グループの取得方法をカスタマイズする必要がある場合は、インスタンスまたはクロージャーのいずれかのオプションを渡すこともできますquery_builder
。QueryBuilder
$er
EntityRepository
'query_builder' => function(\Doctrine\ORM\EntityRepository $er) {
$qb = $er->createQueryBuilder('g');
return $qb->orderBy('g.name', 'DESC);
}
より複雑なシナリオについては、コレクションフォームタイプも参照してください。ただし、jQuery/Javascriptを処理する必要があります。