A と B の 2 つのエンティティがあります。A は B と 1 対多の関係にあります。
collection
フィールド タイプを使用して、A フォーム内に 5 つの B フォームを埋め込んでいます。それを得るために、私は 5 つの AB リレーションを作成していAController
ます。私がやりたいのは、この各B
エンティティのフィールドを使用して、フォーム コレクションにラベルを作成することです。
だから、私は次のコードを持っています:
//AController
$a = new A();
//Followinf returns an array of 5 B entities
$bs = $this->getDoctrine->getEntityManager()->getRepository('MyBundle:B')->findBy(array(
'field' => 'value',
));
foreach ($bs as $b) {
$a->addB($b);
}
$form = $this->createForm(new AType(), $a);
return array(
'a' => $a,
'form' => $form->createView(),
);
//AType
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('a_field')
->add('another_field')
->add('bs', 'collection', array(
'type' => new BType(),
'options' => array(
'label' => 'i want to configure it depending on current B data',
)
))
;
}
この関連トピックを見つけました:
symfony フォーム - CollectionType 内の子エントリ Type 内のエンティティへのアクセス
ただし、子フォームのデータにアクセスするため、これは異なることに注意してください。親フォームから子データにアクセスし、コレクション内の各子ラベルに使用したいと考えています。
を使用して子データにアクセスできることはわかって$builder->getData()->getBs();
いますが、後で子フォームごとに使用する方法がわかりません。
ビューでエンティティをループし、ループ インデックスを使用して各コレクション要素を手動でレンダリングすることもできますが、フォームで実行したいと思います。
どうもありがとう。