私は、1 つの同じエンティティ タイプのすべてのインスタンスである最大 10 個の構成可能なサイドバーを持つエンティティ (レイアウト テンプレート) を持っています。
私の今の解決策は、このように出すことです(以下)
/**
* @var object BizTV\ContainerManagementBundle\Entity\Container
*
* @ORM\ManyToOne(targetEntity="BizTV\ContainerManagementBundle\Entity\Container")
* @ORM\JoinColumn(name="sidebar1", referencedColumnName="id", nullable=true)
*/
protected $sidebar1;
/**
* @var object BizTV\ContainerManagementBundle\Entity\Container
*
* @ORM\ManyToOne(targetEntity="BizTV\ContainerManagementBundle\Entity\Container")
* @ORM\JoinColumn(name="sidebar2", referencedColumnName="id", nullable=true)
*/
protected $sidebar2;
しかし、それらをオブジェクトの配列に格納するのが最善の方法であることに気付きました (これにより、将来的にサイドバラが 10 個に制限されることもありません)。誰かがここで私を正しい方向に向けることができれば。最も難しいのは、これらの 10 個のエンティティを選択するフォームです。上記の私の方法は、10 個のプロパティのそれぞれに対する単純なドロップダウンになります。
->add('sidebar1', 'entity', array(
'label' => 'Choose sidebar ',
'empty_value' => 'Not active',
'class' => 'BizTVContainerManagementBundle:Container',
'property' => 'select_label',
'query_builder' => function(EntityRepository $er) use ($company) {
return $er->createQueryBuilder('u')
->where('u.company = :company')
->setParameters( array('company' => $company) )
->orderBy('u.name', 'ASC');
},
))
->add('sidebar2', 'entity', array(
'label' => 'Choose sidebar ',
'empty_value' => 'Not active',
'class' => 'BizTVContainerManagementBundle:Container',
'property' => 'select_label',
'query_builder' => function(EntityRepository $er) use ($company) {
return $er->createQueryBuilder('u')
->where('u.company = :company')
->setParameters( array('company' => $company) )
->orderBy('u.name', 'ASC');
},
))
繰り返しますが、これが最善の方法とはほど遠いことを認識していますが、Symfony2 を初めて使用するので、どうすればよいかわかりません。