类型错误:传递给Controller :: createFormBuilder()的参数2必须是类型数组,对象给定,在
问题描述:
中调用我使用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(),
));
}
}
答
为createFormBuilder()
或createBuilder()
第二个参数应该是选项(命名为data_class
)阵列。
FormBuilder createFormBuilder(mixed $data = null, array $options = array())
mixed
$data
The initial data for the formarray
$options
Options for the form