Symfony2 EntityManager#persist()希望参数1是实体对象,数组给定

Symfony2 EntityManager#persist()希望参数1是实体对象,数组给定,symfony,doctrine-orm,entity,Symfony,Doctrine Orm,Entity,我是Symfony2的新手,不知道为什么会出现这个错误。也许我的实体有问题?所以我需要一些帮助。 错误: EntityManager#persist() expects parameter 1 to be an entity object, array given. 500 Internal Server Error - ORMInvalidArgumentException 我有以下代码: User.php: <?php namespace Acme\MainBu

我是Symfony2的新手,不知道为什么会出现这个错误。也许我的实体有问题?所以我需要一些帮助。 错误:

     EntityManager#persist() expects parameter 1 to be an entity object, array given.
500 Internal Server Error - ORMInvalidArgumentException 
我有以下代码:

User.php:

    <?php

namespace Acme\MainBundle\Entity;

use Doctrine\ORM\Mapping as ORM;

/**
 * User
 */
class User
{
    /**
     * @var integer
     */
    private $id;

    /**
     * @var string
     */
    private $username;

    /**
     * @var string
     */
    private $password;


    /**
     * Get id
     *
     * @return integer 
     */
    public function getId()
    {
        return $this->id;
    }

    /**
     * Set username
     *
     * @param string $username
     * @return User
     */
    public function setUsername($username)
    {
        $this->username = $username;

        return $this;
    }

    /**
     * Get username
     *
     * @return string 
     */
    public function getUsername()
    {
        return $this->username;
    }

    /**
     * Set password
     *
     * @param string $password
     * @return User
     */
    public function setPassword($password)
    {
        $this->password = $password;

        return $this;
    }

    /**
     * Get password
     *
     * @return string 
     */
    public function getPassword()
    {
        return $this->password;
    }
}

UserController.php:

    <?php

namespace Acme\MainBundle\Controller;

use Symfony\Bundle\FrameworkBundle\Controller\Controller;

use Acme\MainBundle\Form\Type\UserRegType;

class UserController extends Controller
{
    public function registerAction()
    {    
        $form = $this->createForm(new UserRegType());
        return $this->render(
            'AcmeMainBundle:User:register.html.twig',
            array('form' => $form->createView())
        );    
    }

    public function createUserAction()
    {
        $em = $this->getDoctrine()->getEntityManager();

        $form = $this->createForm(new UserRegType());

        $form->bind($this->getRequest());
        $username = $form["username"]->getData();

        if ($form->isValid()) {
            $reg = $form->getData();
            $em->persist($reg);
            $em->flush();
            $session = $this->get('session'); 
            $session->set('username', $username);    

            return $this->redirect($this->generateUrl('home'));
        }
    }

    public function loginAction()
    {
    }

    public function logoutAction()
    {
    }


}

请考虑再次阅读表单章节,并更准确地理解这一点:简而言之,方法
createForm
函数接受第二个参数,该参数是您要将数据绑定到的对象,该对象可以在以后保留。@cheesemacfy谢谢。仔细阅读这些文档确实对我有帮助。
    <?php

namespace Acme\MainBundle\Controller;

use Symfony\Bundle\FrameworkBundle\Controller\Controller;

use Acme\MainBundle\Form\Type\UserRegType;

class UserController extends Controller
{
    public function registerAction()
    {    
        $form = $this->createForm(new UserRegType());
        return $this->render(
            'AcmeMainBundle:User:register.html.twig',
            array('form' => $form->createView())
        );    
    }

    public function createUserAction()
    {
        $em = $this->getDoctrine()->getEntityManager();

        $form = $this->createForm(new UserRegType());

        $form->bind($this->getRequest());
        $username = $form["username"]->getData();

        if ($form->isValid()) {
            $reg = $form->getData();
            $em->persist($reg);
            $em->flush();
            $session = $this->get('session'); 
            $session->set('username', $username);    

            return $this->redirect($this->generateUrl('home'));
        }
    }

    public function loginAction()
    {
    }

    public function logoutAction()
    {
    }


}