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