我试图在循环中为表单添加字段。
<?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()
你知道错误的来源吗?
答案 0 :(得分:1)
循环没有任何内容。
正如消息所示,只有FormBuilder
没有方法createView
。
你可能想要的是:
'form' => $form->getForm()->createView()
您必须首先从表单构建器获取表单类。然后你可以获得表单的视图对象。
编辑:
正如KhorneHoly指出的那样,你之前在getForm()
打电话:
$form->add(
'auswerten',
SubmitType::class
)
->getForm();
但是此方法不会修改$form
变量本身,但会返回新对象。因此,您正在调用它,但不会将返回的表单类对象分配给任何内容。
您可以在此处删除getForm()
来电表格,或将其结果分配给变量,然后在此新对象上稍后致电createView()
。