我遇到了Symfony3和表单的问题。
我有一个父表单,其中包含嵌入的子表单。从控制器,我可以使用$ options数组($ options ['varA'],...)发送我可以在父表单中使用的数据。
$form = $this->createForm(ParentEntityType::class, $objParent, array('varA'=>$varA, 'varB'=>$varB));
但是如果我想将varB变量(例如)传递给嵌入的表单呢?什么是正确的解决方案?
任何帮助将不胜感激,谢谢。
答案 0 :(得分:1)
这样的东西,第一种形式:
$builder->add('name', MyFormType::class, [
'data' => $options['varB']
]);
但是如果你分享你的表格代码会更好。主要关键是在buildForm()方法中通过$ options [' key']传递变量。
答案 1 :(得分:0)
这是2.7的正确方法 在控制器中使用此:
$itemform = $this->createForm(new SyllabusType(), $item, array('databranchid' => $branchid));
并以表格形式使用此:
$builder
->add('studentclassid', 'entity', array(
'class' =>'Schoolerp\Bundle\DBBundle\Entity\Studentclass',
'choice_label' => 'name',
'empty_value' => 'Choose an option',
'query_builder'=>function(EntityRepository $e) use ( $options ){
return $e->createQueryBuilder('u')->where('u.isactive=1')
->andWhere('u.branchid = ?1')
->setParameter(1, $options['databranchid']);
}
))
->add('sectionid', 'entity', array(
'class' =>'Schoolerp\Bundle\DBBundle\Entity\Sections',
'choice_label' => 'name',
'empty_value' => 'Choose an option',
'query_builder'=>function(EntityRepository $e) use ( $options ){
return $e->createQueryBuilder('u')->where('u.isactive=1')
->andWhere('u.branchid = ?1')
->setParameter(1, $options['databranchid']);
}
));
/**
* @param OptionsResolver $resolver
*/
public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefaults(array(
'data_class' => 'Schoolerp\Bundle\DBBundle\Entity\Syllabus',
'databranchid' => null
));
}
如果使用3.0,则将输入类型替换为类类型。
答案 2 :(得分:0)
通过这种方式只是简单的传递值:
$builder->add('userid', 'entity', array(
'class' =>'DBBundle\Entity\AdminUser',
'choice_label' => 'name',
'query_builder'=>function(EntityRepository $e) use ( $options ){
return $e->createQueryBuilder('u')->where('u.status=1')
->andWhere('u.id = ?1')
->setParameter(1, $options['users']);
},
'attr' => array('style'=>'display:none'),
'label_attr' => array('style' =>'display:none')));