Php 类型错误:传递给Controller::createFormBuilder()的参数2必须是在中调用的数组类型、给定对象

Php 类型错误:传递给Controller::createFormBuilder()的参数2必须是在中调用的数组类型、给定对象,php,html,forms,symfony,session,Php,Html,Forms,Symfony,Session,我使用symfony表单在html上创建表单,以更新数据库表中的列值 但是当我运行我的代码时,我得到了这个错误 在这一行 $form = $this->createFormBuilder(new User(), $investor) 我的用户实体文件 <?php namespace AppBundle\Entity; use FOS\UserBundle\Model\User as BaseUser; use Doctrine\ORM\Mapping as ORM; /**

我使用symfony表单在html上创建表单,以更新数据库表中的列值 但是当我运行我的代码时,我得到了这个错误

在这一行

$form = $this->createFormBuilder(new User(), $investor)
我的用户实体文件

<?php
namespace AppBundle\Entity;

use FOS\UserBundle\Model\User as BaseUser;
use Doctrine\ORM\Mapping as ORM;

/**
 * @ORM\Entity
 * @ORM\Table(name="`user`")
 */
class User extends BaseUser
{
    /**
     * @ORM\Id
     * @ORM\Column(type="integer")
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    protected $id;
     /**
     *@var integer
     *
     * @ORM\Column(name="MatchP",type="integer")
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    protected $MatchP;
    public function getMatchP()
    {
        return $this->MatchP;
    }

    public function setMatchP($MatchP)
    {
        $this->MatchP = $MatchP;
    }

    public function __construct()
    {
        parent::__construct();
    }
}
我的默认控制器文件

<?php

namespace site\blogBundle\Controller;

use AppBundle\Entity\User;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Session\Session;
use Symfony\Component\Form\Extension\Core\Type\TextType;
use Symfony\Component\Form\Extension\Core\Type\DateType;
use Symfony\Component\Form\Extension\Core\Type\SubmitType;
class DefaultController extends Controller
{
    public function indexAction(Request $request)
    {
      //$task = new User();
      $user = $this->container->get('security.context')->getToken()->getUser();

      $investor = $this->getDoctrine()->getRepository('AppBundle:User')->findOneBy(array('id' => $user->getId()));
      $MatchP = $investor->getMatchP();
      $form = $this->createFormBuilder(new User(), $investor)
          ->add('MatchP', TextType::class)
          ->add('save', SubmitType::class, array('label' => 'Create Task'))
            ->getForm();

      $form->handleRequest($request);

      if ($form->isSubmitted() && $form->isValid()) {
           if(!empty($form->get('MatchP')->getData())){
               $investor->setMatchP($form->get('MatchP')->getData());
           }
           else{
               $investor->setMatchP($MatchP);
           }

           $em = $this->getDoctrine()->getManager();
           $em->persist($investor);
           $em->flush();

           $session = $this->getRequest()->getSession();
           $session->getFlashBag()->add('message', 'Votre profil a été correctement modifié');


          return $this->redirectToRoute('task_success');
         }

      return $this->render('siteblogBundle:Default:index.html.twig', array(
          'form' => $form->createView(),
      ));       

    }
}
createFormBuilder或createBuilder的第二个参数应该是名为data_class的选项数组

FormBuilder createFormBuildermixed$data=null,array$options=array

混合$data是表单的初始数据

表单的数组$options选项

<?php

namespace site\blogBundle\Controller;

use AppBundle\Entity\User;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Session\Session;
use Symfony\Component\Form\Extension\Core\Type\TextType;
use Symfony\Component\Form\Extension\Core\Type\DateType;
use Symfony\Component\Form\Extension\Core\Type\SubmitType;
class DefaultController extends Controller
{
    public function indexAction(Request $request)
    {
      //$task = new User();
      $user = $this->container->get('security.context')->getToken()->getUser();

      $investor = $this->getDoctrine()->getRepository('AppBundle:User')->findOneBy(array('id' => $user->getId()));
      $MatchP = $investor->getMatchP();
      $form = $this->createFormBuilder(new User(), $investor)
          ->add('MatchP', TextType::class)
          ->add('save', SubmitType::class, array('label' => 'Create Task'))
            ->getForm();

      $form->handleRequest($request);

      if ($form->isSubmitted() && $form->isValid()) {
           if(!empty($form->get('MatchP')->getData())){
               $investor->setMatchP($form->get('MatchP')->getData());
           }
           else{
               $investor->setMatchP($MatchP);
           }

           $em = $this->getDoctrine()->getManager();
           $em->persist($investor);
           $em->flush();

           $session = $this->getRequest()->getSession();
           $session->getFlashBag()->add('message', 'Votre profil a été correctement modifié');


          return $this->redirectToRoute('task_success');
         }

      return $this->render('siteblogBundle:Default:index.html.twig', array(
          'form' => $form->createView(),
      ));       

    }
}