将每个子实体数据用于集合字段类型的选项

时间:2012-11-13 09:34:53

标签: symfony symfony-2.1

我有两个实体,A和B.A与B有一对多的关系。

我使用collection字段类型在A表单中嵌入了五个B表单。为此,我在AController创建了5个A-B关系。我想要做的是使用每个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 form - Access Entity inside child entry Type in a CollectionType

但请注意,这是不同的,因为它访问子表单中的数据。我想从父表单访问子数据,并将其用于集合中的每个子标签。

我知道我可以使用$builder->getData()->getBs();访问子数据,但我无法知道如何在以后为每个子表单使用它。

我也知道我可以在视图中执行它,循环实体并使用循环索引手动渲染每个集合元素,但我想在表单中执行此操作。

非常感谢。

0 个答案:

没有答案