2016-08-03 97 views
0

我想從控制器傳遞參數到窗體,但參數有alwyas空值。從控制器的參數形式始終爲空值

這是控制器

$form = $this->createForm(BaseType::class, $entity, array('nom' => 'Informatique')); 

,這是FormType

->add('departement', EntityType::class, array(
      'class'=> 'AppBundle\Entity\Departement', 
      'choice_label' => 'nom', 
      'multiple' => false, 
      'expanded' => false, 
      'query_builder' => function(DepartementRepository $er) use($options) { 
       return $er->createQueryBuilder('d') 
        ->where('d.nom like :nom') 
        ->setParameter('nom', '%' .$options['nom']. '%') 
        ; 
      } 
     )) 

public function configureOptions(OptionsResolver $resolver) 
{ 
    $resolver->setDefaults(array(
     'data_class' => 'AppBundle\Entity\Formation', 
     'nom' => null, 
    )); 
} 

輸出的var_dump的($選項[ 'NOM']);爲空

+0

您需要顯示「DocumentType」類的代碼,以及您打算如何創建$ document對象hous? –

+0

@ Alvin Bunk:我編輯了我的問題 – hous

回答

2

createForm的第三個參數是數組$options,它可以包含..任何你想要的。

所以在你的控制器:

public function yourAction() 
{ 
    $form = $this->createForm(
     DocumentType::class, 
     $document, 
     ['yourCustomOption' => 'value'] 
    ); 

,您可以訪問或在你FormType設置默認值:

public function buildForm(FormBuilderInterface $builder, array $options) 
{ 
    $yourCustomOption = $options['yourCustomOption']; //will be 'value' 
} 

public function configureOptions(OptionsResolver $resolver) 
{ 
    $resolver->setDefaults(array(
     'yourCustomOption' => 'Default value', 
    )); 
} 
+0

我試過你的解決方案,但參數始終爲空值。我已編輯我的問題 – hous

+0

我從來沒有遇到過這種情況不起作用的情況。你確定你沒有壓倒其他地方的價值嗎?如果可能,請粘貼您的完整FormType。 – magnetik

+0

這是formType (https://gist.github.com/houssem04/b1b67009dd5506cf4623155e592fd54b) – hous

0

就在你的代碼,你設置 'NOM' 到null,所以你可能(我猜)需要改變它:

public function configureOptions(OptionsResolver $resolver) 
{ 
    $resolver->setDefaults(array(
     'data_class' => 'AppBundle\Entity\Formation', 
     'nom' => 'some nom value', 
)); 
} 

我不知道你爲什麼將它設置爲null,然後你期待它不爲空?你忽略了這個嗎?