下面介绍如何将数据传递给使用 Symfony 3 的任何人的嵌入式表单。首先完全按照上面概述@sekl,然后执行以下操作:
在主要表单类型中
使用'entry_options将 var 传递给嵌入的表单'
->add('your_embedded_field', CollectionType::class, array(
'entry_type' => YourEntityType::class,
'entry_options' => array(
'var' => $this->var
)))
在嵌入的表单类型中
将选项添加到选项解析器
public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefaults(array(
'data_class' => 'Yourbundle\Entity\YourEntity',
'var' => null
));
}
访问构建窗体函数中的变量。请记住在生成器函数之前设置此变量。在我的情况下,我需要根据特定的ID过滤选项。
public function buildForm(FormBuilderInterface $builder, array $options)
{
$this->var = $options['var'];
$builder
->add('your_field', EntityType::class, array(
'class' => 'YourBundle:YourClass',
'query_builder' => function ($er) {
return $er->createQueryBuilder('u')
->join('u.entity', 'up')
->where('up.id = :var')
->setParameter("var", $this->var);
}))
;
}