2016-05-19 7 views
1

私はループ内のフォームにフィールドを追加しようとしています。SilexでFormViewを作成できないのはなぜですか?

<?php 
namespace resources\model; 


use Silex\Application; 
use Symfony\Component\Form\Extension\Core\Type\SubmitType; 


/** 
* Class BuildTheForm 
* @package resources\model 
*/ 
class BuildTheForm 
{ 


/** 
* @param Application $app 
* @param array $questions 
* @return mixed 
*/ 
public function buildTheForm(Application $app, array $questions) 
{ 

    $answers = []; 

    $form = $app['form.factory']->createBuilder('form'); 

    $choices = array(
     'A' => 'A Trifft auf nicht mich zu', 
     'B' => 'B', 
     'C' => 'C', 
     'D' => 'D', 
     'E' => 'E - Trifft auf mich zu' 
    ); 

    for ($i = 0; $i <= 28; $i++) { 
     array_push($answers, $i); 
    } 

    foreach ($answers as $answer) { 
     $form->add(
      $answer, 
      'choice', 
      array(
       'choices' => $choices, 
       'multiple' => false 
      ) 
     ); 
    } 

    $form->add(
     'auswerten', 
     SubmitType::class 
    ) 
    ->getForm(); 


    return $app['twig']->render(
     'questions.html.twig', 
     array(
      'questions' => $questions, 
      'form' => $form->createView() 
     ) 
    ); 
} 

私が手にエラーがある:

Fatal error: Call to undefined method Symfony\Component\Form\FormBuilder::createView() in /Library/WebServer/Documents/Psychoform/resources/model/BuildTheForm.php on line 67

あなたはエラーから来ているアイデアを持っていますか?

答えて

1

ループに何も付いていません。

FormBuilderにはメッセージcreateViewがありません。あなたはおそらくしたいどのような

は次のとおりです。

 'form' => $form->getForm()->createView() 

あなたが最初の場所でフォームビルダからフォームクラスを取得する必要があります。次に、フォームのビューオブジェクトを取得できます。

編集:KhorneHolyが指摘したように

、あなたは以前でgetForm()を呼んでいる:

$form->add(
    'auswerten', 
    SubmitType::class 
) 
->getForm(); 

しかし、この方法は新しいオブジェクトを返します$form変数そのものではなく、それを変更しません。したがって、あなたはそれを呼び出していますが、返されたフォームクラスオブジェクトを何にも割り当てていません。

あなたはここにgetForm()コールフォームを削除するか、それが変数になると、この新しいオブジェクトcreateView()後でを呼び出します割り当てることができます。

+1

彼はすでに – KhorneHoly

+0

の前に 'getForm()'メソッドを使用しています。これを指摘してくれてありがとう。私は私の答えを更新しました。 –

+0

これは ''form' => $ form-> createView()'の代わりにエラー: ''form '=> $ form-> getForm() - > createView()'でした。以前は ' - > getForm()'を使用していたと思っていたので、エラーを理解していません........助けてくれてありがとうございます – freemindghost

関連する問題