2017-08-23 10 views
0

を提出し、選択肢が他のエンティティからフィールドから配列としてsymfonyの - フォームビルダ:ChoiceTypeは常にNULLの後、私はsymfonyで仕事と私はChoiceTypeでフォームを持っている

を来ているにformType

public function buildForm(FormBuilderInterface $builder, array $options) 
{ 
     $builder->add('paq', ChoiceType::class, array(
       'choices' => $options['data_array'], 
      )); 
} 

小枝

<form action="{{ path('ligne_panier_create', { 'id': opProd.produit.id }) }}" method="post" {{ form_enctype(form) }} > 
     {{form_start(form)}} 
      <div class="form-group"> 
       <h5>Choisir le type de paquetage</h5> 
        {{form_widget(form.paq, { 'attr': {'class': 'form-control subject'} }) }}<br> 
     </div> 
      <p class="text-center"> 
       <button type="submit" id="_submit" name="_submit" value="" class="btn btn-primary" ><i class="fa fa-sign-in"></i>Ajouter </button> 
       </p> 
      {{form_end(form)}} 
     </form> 

後に、このフィールドの値を提出コントローラ

public function createAction(Request $request, $id) 
{ 

    $em=$this->getDoctrine()->getManager(); 

    $Lpanier = new LignePanier(); 
    $produit = $em->getRepository('CentralBundle:Produit')->find($id); 
    $opProd = $em->getRepository('CentralBundle:OperationProduit')->find($id); 
    $data_array = $opProd->getPaquetage(); 

    $form = $this->createForm('Central\CentralBundle\Form\LignePanierType', $Lpanier, array('data_array'=>$data_array)); 
    $form->handleRequest($request); 
    $paq= $form['paq']->getData(); // always null !! 
    $qte= $form['qte']->getData(); // work fine 
    $Lpanier->setPrixTotProd($qte*$produit->getPrixVenteTTC()); 


     $em->persist($Lpanier); 
     $em->flush($Lpanier); 

    return $this->render('CentralBundle:Default:commitSuccess.html.twig'); 

} 

完全リストの選択表示が、問題は常にデータベースにNULLを取得します。

私はフォームに他の入力があり、完全に提出しました!

誰かが私を助けることができますか?

+1

あなたは '$ options ['data_array']'をどのように配置するのか教えてください。 'form_start'は'

'を出力し、' form_end'は '
'を出力します。生成されるHTMLには2つの形式がありますので注意してください。 – LP154

答えて

0

テンプレートにはopProd {'id':opProd.produit.id}オブジェクトがありますが、レンダリングメソッドではこのvarを設定しません。

+0

レンダリングメソッドは空の小枝を表示します –

+0

あなたはそれを忘れてしまったと思います: 'return $ this-> render( 'CentralBundle:Default:commitSuccess.html.twig'、['opProd' => $ opProd]);' – Athos

+0

フォームの宣言では、以下を行う必要があります。 '$ form = $ this-> createForm( 'Central \ CentralBundle \ Form \ LignePanierType'、$ Lpanier、[ 'action' => $ this-> generateUrl( 'ligne_panier_create '' method '=>' POST '、 ' data_array '=> $ data_array ]); – Athos

関連する問題