2017-07-26 42 views
1

我正面臨着Symfony3和表單的問題。Symfony - 如何將變量傳遞給嵌入式表格

我有一個形式與嵌入式形式。從控制器中,我可以使用$ options數組($ options ['varA'],...)在表格中發送數據。

$form = $this->createForm(ParentEntityType::class, $objParent, array('varA'=>$varA, 'varB'=>$varB)); 

但是,如果我想要將varB變量(例如)傳遞給嵌入式表單呢?什麼是適當的解決方案?

任何幫助將不勝感激,謝謝。

+0

也許這將幫助你:https://stackoverflow.com/questions/10272353/pass-value-in-options-array-to-embedded-form –

回答

1

這樣的事情,在第一種形式:

$builder->add('name', MyFormType::class, [ 
      'data' => $options['varB'] 
]); 

不過還好,如果您共享形式的代碼。主鍵是在buildForm()方法中通過$ options ['key']傳遞變量。

1

這是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更換輸入型進入課堂類型。