为什么我不能在Silex中创建FormView?

时间:2016-05-19 06:43:25

标签: php forms symfony silex

我试图在循环中为表单添加字段。

<?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()
        )
    );
}

我得到的错误是:

  

致命错误:在第67行的/Library/WebServer/Documents/Psychoform/resources/model/BuildTheForm.php中调用未定义的方法Symfony \ Component \ Form \ FormBuilder :: createView()

你知道错误的来源吗?

1 个答案:

答案 0 :(得分:1)

循环没有任何内容。

正如消息所示,只有FormBuilder没有方法createView

你可能想要的是:

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

您必须首先从表单构建器获取表单类。然后你可以获得表单的视图对象。

编辑:

正如KhorneHoly指出的那样,你之前在getForm()打电话:

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

但是此方法不会修改$form变量本身,但会返回新对象。因此,您正在调用它,但不会将返回的表单类对象分配给任何内容。

您可以在此处删除getForm()来电表格,或将其结果分配给变量,然后在此新对象上稍后致电createView()