如何访问子表单中父表单的数据?
例如,有产品和类别。产品和类别是多对多的。如果我想编辑类别的所有产品。每个产品的可编辑数据取决于类别。
是否可以通过使用Symfony Forms来实现这一目标?
目前我无法看到任何可能,因为产品没有关于当前类别的信息(因为关系是多对多)。
答案 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
}
请告诉我它是否有效,我是在没有测试的情况下编写的,所以我们可以修复任何可能的拼写错误。