Forms Symfony2表单-访问父表单的数据

Forms Symfony2表单-访问父表单的数据,forms,symfony,symfony-forms,Forms,Symfony,Symfony Forms,如何访问子窗体中父窗体的数据 例如,有产品和类别。产品和类别是多对多的。如果我想编辑一个类别的所有产品。每个产品的可编辑数据取决于类别 是否可以通过使用Symfony表单来实现这一点 现在我看不到任何可能性,因为产品没有关于当前类别的信息(因为关系是多对多的)。我认为没有任何方法可以以任何“干净”的方式访问父表单数据 然而,这是可能的 您必须将其作为选项从主窗体传递到子窗体 例如: 主窗体,如何包含子窗体: $builder->add('sub', new SubType(), a

如何访问子窗体中父窗体的数据

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

是否可以通过使用Symfony表单来实现这一点


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

我认为没有任何方法可以以任何“干净”的方式访问父表单数据

然而,这是可能的

您必须将其作为选项从主窗体传递到子窗体

例如:

主窗体,如何包含子窗体:

$builder->add('sub',   new SubType(),   array('parent_data' => $builder->getData());
如果您的子类型是collection,则有点不同:

$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

}

请告诉我它是否有效,我未经测试就编写了它,因此我们可以修复任何可能的打字错误。

谢谢分享。这看起来不错。因为我今天不上班,我明天就试试。我一直在为这件事伤脑筋。谢谢