2016-08-03 8 views
0

コントローラからフォームにパラメータを渡したいのですが、パラメータにはnull値があります。コントローラからフォームへのパラメータは常にnull値を持っています

これはコントローラ

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

であり、これはのvar_dumpのに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, 
    )); 
} 

出力($オプション[ 'NOM'])です。 nullです

+0

"DocumentType"クラスのコードを表示する必要があります。どのように$ documentオブジェクトを作成する予定ですか? –

+0

@ Alvin Bunk:私の質問を編集しました – hous

答えて

2

createFormの3番目のパラメータは、配列$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

あなたのソリューションを試しましたが、パラメータは常にnull値です。私は自分の質問を編集しました – hous

+0

これはうまくいかなかったケースに直面しませんでした。他の場所の値を上書きしていないと確信していますか?可能であれば、完全なFormTypeを貼り付けます。 – magnetik

+0

これはformTypeです (https://gist.github.com/houssem04/b1b67009dd5506cf4623155e592fd54b) – hous

0

右あなたのコードでは、あなたはに 'NOM' を設定しましたヌル、あなたはおそらく(私は推測している)、それを変更する必要がありますので:

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

なぜあなたはそれをnullに設定して、あなたはそれがヌルではないことを期待していたのか分かりませんか?あなたはこれを見逃しましたか?

関連する問題