2012-08-23 52 views
1

我有這樣的錯誤,當我提出我的表格:類的Symfony 分量表格形式不是有效的實體或映射超類

類的Symfony \分量\表格\形式不是有效的實體或映射超類。

問題出在這個事實,我試圖將數據保存到我的控制器中的數據庫。當我隱藏那部分代碼時,我沒有任何問題提交我的表單。我使用的Symfony 2.0.16

這裏是實體

<?php 

namespace Acme\FormsBundle\Entity; 

use Doctrine\ORM\Mapping as ORM; 

/** 
* Acme\FormsBundle\Entity\UserAccount 
*/ 
class UserAccount { 
/** 
* @var integer $id 
*/ 
private $id; 

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

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

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

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

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

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

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

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

/** 
* @var text $freetext 
*/ 
private $freetext; 

/** 
* @var boolean $status 
*/ 
private $status; 

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

/** 
* Set user_id 
* 
* @param string $userId 
*/ 
public function setUser_id($user_id) { 
    $this -> user_id = $user_id; 
} 

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

/** 
* Set mail 
* 
* @param string $mail 
*/ 
public function setMail($mail) { 
    $this -> mail = $mail; 
} 

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

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

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

/** 
* Set role 
* 
* @param string $role 
*/ 
public function setRole($role) { 
    $this -> role = $role; 
} 

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

/** 
* Set pseudo 
* 
* @param string $pseudo 
*/ 
public function setPseudo($pseudo) { 
    $this -> pseudo = $pseudo; 
} 

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

/** 
* Set nom 
* 
* @param string $nom 
*/ 
public function setNom($nom) { 
    $this -> nom = $nom; 
} 

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

/** 
* Set prenom 
* 
* @param string $prenom 
*/ 
public function setPrenom($prenom) { 
    $this -> prenom = $prenom; 
} 

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

/** 
* Set sexe 
* 
* @param string $sexe 
*/ 
public function setSexe($sexe) { 
    $this -> sexe = $sexe; 
} 

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

/** 
* Set freetext 
* 
* @param text $freetext 
*/ 
public function setFreetext($freetext) { 
    $this -> freetext = $freetext; 
} 

/** 
* Get freetext 
* 
* @return text 
*/ 
public function getFreetext() { 
    return $this -> freetext; 
} 

/** 
* Set status 
* 
* @param boolean $status 
*/ 
public function setStatus($status) { 
    $this -> status = $status; 
} 

/** 
* Get status 
* 
* @return boolean 
*/ 
public function getStatus() { 
    return $this -> status; 
} 

} 

這裏是控制器

namespace Acme\FormsBundle\Controller; 
use Symfony\Bundle\FrameworkBundle\Controller\Controller; 
use Symfony\Component\HttpFoundation\Request; 
use Symfony\Component\HttpFoundation\Response; 
use Acme\FormsBundle\Entity\UserAccount; 

class DefaultController extends Controller { 

public function newUserAction(Request $request) { 
    $newUser = new UserAccount(); 
    $newUser -> setUser_id(''); 
    $newUser -> setRole(''); 
    $newUser -> setNom(''); 
    $newUser -> setPrenom(''); 
    $newUser -> setSexe(''); 
    $newUser -> setFreetext(''); 
    $newUser -> setStatus(''); 

    $newUserForm = $this -> createFormBuilder($newUser) 
       -> add('pseudo', 'text') 
       -> add('mail', 'email') 
       -> add('password', 'password') 
       -> getForm(); 

    //if the form has been submitted 
    if ($request->getMethod() == 'POST') { 
     $newUserForm->bindRequest($request); 

     if ($newUserForm->isValid()) { 
      //Perform some actions 
      $em = $this->getDoctrine()->getEntityManager(); 
      $em->persist($newUserForm); 
      $em->flush(); 

      //Prepare confirmation message 
      $this->get('session')->setFlash('notice','Account successfully created'); 

      //redirect user 
      return $this->redirect($this->generateUrl('AcmeWelcomeBundle_homepage')); 
     } 
    } 

    return $this -> render('AcmeFormsBundle:Default:newUser.html.twig', array('form' => $newUserForm -> createView(),)); 
} 
} 

我不知道這一點。

回答

2

您應該堅持您的$newUser對象,而不是表單本身。

+0

哇!那很快。謝謝! – iwooli

相關問題