我正在尝试将我的数据添加到我的数据库中,我试图不使用formbuilder,在我将所有表单放入控制器,并且我的实体包含外键但我得到了这个错误: 属性“id_classe”和方法“getIdClasse()”,“idClasse()”,“isIdClasse()”,“hasIdClasse()”,“__ get()”都不存在,并且在类“MyApp”中具有公共访问权限SchoolBundle \实体\ Etudiant”。 这是我在控制器中的功能:
public function AjoutAction(Request $request)
{ $classe=new Etudiant();
$formBuilder = $this->get('form.factory')->createBuilder('form', $classe);
$formBuilder
->add('prenom', 'text')
->add('nom', 'text')
->add('Cin', 'integer')
->add('id_classe', 'integer')
->add('save', 'submit')
;
$form = $formBuilder->getForm();
if ($form->handleRequest($request)->isValid()) {
$objToPersist = $form->getData();
$em = $this->getDoctrine()->getManager();
$em->persist($objToPersist);
$em->flush();
}
return $this->render('MyAppSchoolBundle:Etudiant:ajout.html.twig',array(
'form' => $form->createView(),
));
}
这是我的实体
namespace MyApp\SchoolBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\Validator\Constraints as Assert;
use Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity;
/**
* @ORM\Entity
*/
class Etudiant {
/**
* @ORM\id
*@ORM\GeneratedValue
*@ORM\Column(type="integer",name="ID_Etudiant")
*/
private $Id;
/**
*@ORM\Column{type="string",length=255}
*/
private $prenom;
/**
*@ORM\Column{type="string",length=255}
*/
private $nom;
/**
*@Assert\NotBlank
*@ORM\Column(type="integer", unique=true)
*/
private $cin; //unique ne fonctionne pas qu'avec les assert
/**
* @ORM\ManyToOne(targetEntity="Classes",cascade={"ALL"})
*/
private $id_classe;
function getId() {
return $this->Id;
}
function getPrenom() {
return $this->prenom;
}
function getNom() {
return $this->nom;
}
function setId($Id) {
$this->Id = $Id;
}
function setPrenom($prenom) {
$this->prenom = $prenom;
}
function setNom($nom) {
$this->nom = $nom;
}
function getCin() {
return $this->cin;
}
function setCin($cin) {
$this->cin = $cin;
}
public function getId_classe() {
return $this->id_classe;
}
function setId_classe($id_classe) {
$this->id_classe = $id_classe;
}
}
答案 0 :(得分:2)
在您的表单中,您有:
->add('id_classe', 'integer')
在您的实体中添加一个setter
public function setIdClasse($idClasse) {
$this->id_classe = $idClasse;
}
另外,建议:
1 始终为您的功能添加可见性(public function blabla()
或private function blabla()
)
2 首选使用驼峰案例(因此您的属性为$nomClasse
,$idClasse
,$id
等。)
3 不是强制性的,但最好在你的二传手中返回对象
4 您的表示法不一致(请参阅表单构建器->add('nom', 'text')
->add('Cin', 'integer')
)
Getters和Setter通常如下所示:
public function getNomClasse()
{
return $this->nomClasse;
}
public function setNomClasse($nomClasse)
{
$this->nomClasse = $nomClasse;
return $this;
}