2017-04-01 75 views
-1

中调用我使用symfony窗​​体在html上创建表单来更新我的数据库表中的列值 但是当我我的代码运行我得到这个错误类型错误:传递给Controller :: createFormBuilder()的参数2必须是类型数组,对象给定,在

在这一行

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

我的树枝文件代码

{{ form_start(form) }} 
{{ form_widget(form) }} 
{{ form_end(form) }} 

我的默认控制器文件

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

    } 
} 

回答

2

createFormBuilder()createBuilder()第二个参数应该是选项(命名为data_class)阵列。

FormBuilder createFormBuilder(mixed $data = null, array $options = array())

mixed $data The initial data for the form

array $options Options for the form

相关问题