2016-03-28 4 views
3

私はSymfony2でウェブサイトを構築しています。今は大きなアンケートを作成する必要があります。このためクラスのフォームの行をたくさん表示する

、私は2つのテーブルを作成:質問と回答(と私は、ユーザーが持っている)

私は質問表にすべての私の質問を作成し、ユーザーが質問に答えるとき、私はテーブルの行を作成します。

私の問題は、実際にはform_rest(form)を使用してフォームを表示しています...それは非常に醜いです! :)私はそれにいくつかのCSSを適用したいと思います...と私は(それが30〜60の間とすることができる)多くの質問を持っているので、私はここで{{ form_widget(form.row, { 'attr': {'class': 'form-control'} }) }}

を行うことはできません

は私のコードです:

for ($i=0; $i < count($questions); $i++) { 

      $answer = null; 
      for ($j=0; $j < count($answers); $j++) { 

       if ($answers[$j]->getQuestion() == $questions[$i]) { 
        $answer = $answers[$j]; 
        break; 
       } 
      } 

      $tmpForm->add($questions[$i]->getId(), TextType::class, array(
       'required' => false, 
       'label' => $questions[$i]->getQuestion(), 
       'data' => ($answer != null ? $answer->getAnswer() : '')) 
      ); 
     } 

     $form = $tmpForm->getForm(); 

     if ($request->isMethod('POST')) { 

      $form->handleRequest($request); 
      $data = $form->getData(); 

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

      for ($i=0; $i < count($questions); $i++) { 

       $value = $data[$questions[$i]->getId()]; 

       if ($value == null) 
        continue; 

       $ans = $answerRepository->findOneBy(array('question' => $questions[$i])); 

       if ($ans != null && $ans->getAnswer() != $value) { 

        $ans->setAnswer($value); 
        $ans->setUpdatedOn(new \Datetime()); 
       } 
       else if ($ans == null) { 

        $ans = new Answer(); 

        $ans->setAnswer($value); 
        $ans->setQuestion($questions[$i]); 
        $ans->setCreatedOn(new \Datetime()); 
        $ans->setUpdatedOn(new \Datetime()); 

        $em->persist($ans); 
       } 
      } 
      $em->flush(); 
     } 

テキストボックスをカスタマイズして各行をレンダリングするにはどうすればよいですか? FormBuilderであなたの助け

答えて

2

設定CSSクラスの

ありがとう:

$tmpForm->add(
    $questions[$i]->getId(), 
    TextType::class, 
    array(
     'required' => false, 
     'label' => $questions[$i]->getQuestion(), 
     'data' => ($answer != null ? $answer->getAnswer() : ''), 
     'attr' => array('class' => 'form-control') 
    ) 
); 

あなたはよりカスタマイズの入力が必要な場合は、その後、私はform renderingをお勧めします。

+0

とても簡単です...魅力のように動作します。ありがとう! – carndacier

関連する問題