Forms Symfony2表单-访问父表单的数据
如何访问子窗体中父窗体的数据 例如,有产品和类别。产品和类别是多对多的。如果我想编辑一个类别的所有产品。每个产品的可编辑数据取决于类别 是否可以通过使用Symfony表单来实现这一点Forms Symfony2表单-访问父表单的数据,forms,symfony,symfony-forms,Forms,Symfony,Symfony Forms,如何访问子窗体中父窗体的数据 例如,有产品和类别。产品和类别是多对多的。如果我想编辑一个类别的所有产品。每个产品的可编辑数据取决于类别 是否可以通过使用Symfony表单来实现这一点 现在我看不到任何可能性,因为产品没有关于当前类别的信息(因为关系是多对多的)。我认为没有任何方法可以以任何“干净”的方式访问父表单数据 然而,这是可能的 您必须将其作为选项从主窗体传递到子窗体 例如: 主窗体,如何包含子窗体: $builder->add('sub', new SubType(), a
现在我看不到任何可能性,因为产品没有关于当前类别的信息(因为关系是多对多的)。我认为没有任何方法可以以任何“干净”的方式访问父表单数据 然而,这是可能的 您必须将其作为选项从主窗体传递到子窗体 例如: 主窗体,如何包含子窗体:
$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
}
请告诉我它是否有效,我未经测试就编写了它,因此我们可以修复任何可能的打字错误。谢谢分享。这看起来不错。因为我今天不上班,我明天就试试。我一直在为这件事伤脑筋。谢谢