Symfony2 Forms - 访问父Form的数据

时间:2014-05-07 14:50:30

标签: forms symfony symfony-forms

如何访问子表单中父表单的数据?

例如,有产品和类别。产品和类别是多对多的。如果我想编辑类别的所有产品。每个产品的可编辑数据取决于类别。

是否可以通过使用Symfony Forms来实现这一目标?

目前我无法看到任何可能,因为产品没有关于当前类别的信息(因为关系是多对多)。

1 个答案:

答案 0 :(得分:6)

我认为没有办法在任何" clean"中访问父表单数据。方式。

然而,这是可能的。

您必须将其作为选项传递给主窗体中的子窗体。

示例:

主要表单,您将如何包含子表单:

$builder->add('sub',   new SubType(),   array('parent_data' => $builder->getData());

如果你的子类型是集合,那就有点不同了:

$builder->add('subs',   'collection',   array('type' => new SubType(),
                                          'options' => array('parent_data' => $builder->getData()))
    );

将此添加到子表单:

public function setDefaultOptions(OptionsResolverInterface $resolver)
{
    $resolver
        ->setRequired(array('parent_data'));
}

public function buildForm(FormBuilderInterface $builder, array $options)
{
    $parentData = $options['parent_data'];

    ... build subform

}

请告诉我它是否有效,我是在没有测试的情况下编写的,所以我们可以修复任何可能的拼写错误。