我需要你的帮助,因为它就像一天我被Symfony 2的映射问题卡住了。
首先,我是Symfony的新手,我只有2周的时间来练习这个框架。我们来谈谈我真正的问题。简介很简单,我有一个非常简单的形式,我用它来创建一个类别(CD/DVD/书籍等)。因此,通常情况下,我的页面显示所有已经存在的类别,我输入一个新的类别(如BLU-RAY为ie),然后该类别被保存在我的数据库命名的类别与这些属性(idcategory =BLU-RAY, idcatalog =CAT01)。
这是正常的情况,在我的例子中,我可以列出我所有的类别但是当我提交我的表单时,我得到了一个漂亮的
类"Doctrine'ORM'EntityRepository"在链中找不到已配置的名称空间SEBO'BackOfficeBundle'Entity
首先这是我的控制器
public function categorieAction(Request $request)
{
$categorie = $this->getDoctrine()
->getRepository('SEBOBackOfficeBundle:Categorie');
$listeCategorie = $categorie->findAll();
$newCategorie = new Categorie();
$newCategorie->setIdcatalogue('CAT01');
$form = $this->createFormBuilder($newCategorie)
->add('idcategorie', 'text')
->add('Ajouter', 'submit')
->getForm();
$form->handleRequest($request);
if ($form->isValid()) {
$em = $this->getDoctrine()->getManager();
$em->persist($categorie);
$em->flush();
$request->getSession()->getFlashBag()->add('notice', 'Catégorie bien enregistrée.');
return $this->redirect($this->generateUrl('sebo_back_office_categorie', array(
'listeCategorie' => $listeCategorie,
'form' => $form->createView(),
)));
}
$content = $this->get('templating')->render('SEBOBackOfficeBundle:Advert:categorie.html.twig', array(
'listeCategorie' => $listeCategorie,
'form' => $form->createView()
));
return new Response($content);
}
这是我的类category。php
namespace SEBO'BackOfficeBundle'Entity;
use Doctrine'ORM'Mapping as ORM;
/**
* Categorie
*
* @ORM'Table(name="categorie", indexes={@ORM'Index(name="FK_Catalogue_IdCatalogue", columns={"IdCatalogue"})})
* @ORM'Entity
*/
class Categorie
{
/**
* @var string
*
* @ORM'Column(name="IdCategorie", type="string", length=40, nullable=false)
* @ORM'Id
* @ORM'GeneratedValue(strategy="IDENTITY")
*/
private $idcategorie;
/**
* @var 'Catalogue
*
* @ORM'ManyToOne(targetEntity="Catalogue")
* @ORM'JoinColumns({
* @ORM'JoinColumn(name="IdCatalogue", referencedColumnName="IdCatalogue")
* })
*/
private $idcatalogue;
/**
* Get idcategorie
*
* @return string
*/
public function getIdcategorie()
{
return $this->idcategorie;
}
/**
* Set idcatalogue
*
* @param string $idcatalogue
* @return Categorie
*/
public function setIdcatalogue($idcatalogue)
{
$this->idcatalogue = $idcatalogue;
return $this;
}
/**
* Set idcategorie
*
* @param string $idcategorie
* @return Categorie
*/
public function idcategorie($idcategorie)
{
$this->idcategorie = $idcategorie;
return $this;
}
/**
* Get idcatalogue
*
* @return 'SEBO'BackOfficeBundle'Entity'Catalogue
*/
public function getIdcatalogue()
{
return $this->idcatalogue;
}
}
这是我的Doctrine/ORM xml文件。
<?xml version="1.0" encoding="utf-8"?>
<doctrine-mapping xmlns="http://doctrine-project.org/schemas/orm/doctrine-mapping" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://doctrine-project.org/schemas/orm/doctrine-mapping http://doctrine-project.org/schemas/orm/doctrine-mapping.xsd">
<entity name="Categorie" table="categorie">
<indexes>
<index name="FK_Catalogue_IdCatalogue" columns="IdCatalogue"/>
</indexes>
<id name="idcategorie" type="string" column="IdCategorie" length="40">
<generator strategy="IDENTITY"/>
</id>
<many-to-one field="idcatalogue" target-entity="Catalogue">
<join-columns>
<join-column name="IdCatalogue" referenced-column-name="IdCatalogue"/>
</join-columns>
</many-to-one>
</entity>
</doctrine-mapping>
一切都很好,直到我提交,我可以看到我的类别列表,但经过大量的搜索,我仍然看不到什么是类"Doctrine'ORM'EntityRepository",我肯定错过了一件事,我希望你能帮助。
在你的实体中,你必须设置:
使用原则' ORM ' EntityRepository;
此页有一个例子:
database and Doctrine
好吧,也许是因为我累了,但我试图发送对象$ category而不是我创建的新对象$ newcategory