未定义的方法Symfony\Component\Form\FormBuilder :: createView()

lep*_*pix 2 forms symfony-forms symfony symfony-2.3

我收到错误:

Call to undefined method Symfony\Component\Form\FormBuilder::createView() 
Run Code Online (Sandbox Code Playgroud)

对于以下代码

public function searchAction(Request $request, $type) {

    $filters = new Filters();

    $form = $this->createFormBuilder($filters)
        ->setAction($this->generateUrl('project_search'))
        ->add('name', 'text');

    if($type == 'extra') {
        $form->add('job', 'text');
    }


    $form->add('send', 'submit', array('label' => "Envoyer"))
        ->getForm();


    return $this->render('Bundle:Controller:search.html.twig', array(
        'form' => $form->createView(),
    ));
}
Run Code Online (Sandbox Code Playgroud)

我相信这是因为我添加了一个新的输入$form->add('job', 'text');.我怎样才能解决这个问题 ?

Cro*_*zin 5

你需要引用Form实例,而不是FormBuilder.您已经在使用getForm()返回所需引用的方法,但您不会在任何地方进行分配.

$filters = new Filters();

$formBuilder = $this->createFormBuilder($filters)
    ->setAction($this->generateUrl('project_search'))
    ->add('name', 'text');

if($type == 'extra') {
    $formBuilder->add('job', 'text');
}


$formBuilder->add('send', 'submit', array('label' => "Envoyer"));
$form = $formBuilder->getForm();


return $this->render('Bundle:Controller:search.html.twig', array(
    'form' => $form->createView(),
));
Run Code Online (Sandbox Code Playgroud)