我有两个实体,系列和杂志,具有ManyToMany关系。 当我尝试添加一个新的Serie时,我使用两个路由(new和create),在SerieController中使用以下代码:
public function newAction($id = null)
{
$entity = new Serie();
if ($id) {
$em = $this->getDoctrine()->getManager();
$mag = $em->getRepository('MangaBundle:Magazine')->find($id);
$entity->addMagazine($mag);
}
$form = $this->createForm(new SerieType(), $entity);
return array(
'serie' => $entity,
'form' => $form->createView(),
);
}
和
public function createAction(Request $request)
{
$entity = new Serie();
$form = $this->createForm(new SerieType(), $entity);
$form->bind($request);
if ($form->isValid()) {
$em = $this->getDoctrine()->getManager();
$em->persist($entity);
$magazines = $entity->getMagazines();
foreach($magazines as $magazine){
$em->persist($magazine);
}
$em->flush();
return $this->redirect($this->generateUrl('serie_show', array('id' => $entity->getId())));
}
return array(
'serie' => $entity,
'form' => $form->createView(),
);
但是,当我尝试这样做时,我明白了:
Unable to find Serie entity. 404 Not Found - NotFoundHttpException
出现以下错误:
INFO - 匹配路线“serie_show”(参数:“_ control”: “MyList \ DB \ MangaBundle \ Controller \ SerieController :: showAction”,“id”: “创造”,“_路德”:“serie_show”)
在showAction中有这个不应该发生的事情:
public function showAction($id)
{
$em = $this->getDoctrine()->getManager();
$entity = $em->getRepository('MangaBundle:Serie')->find($id);
if (!$entity) {
throw $this->createNotFoundException('Unable to find Serie entity.');
}
$deleteForm = $this->createDeleteForm($id);
return array(
'serie' => $entity,
'delete_form' => $deleteForm->createView(),
);
}
我无法弄清楚在createAction的重定向中将'create'作为id发送会发生什么。任何人都可以帮我弄清楚我错过了什么吗?
答案 0 :(得分:0)
仔细查看INFO通知(顺便说一下,这不是错误,它是一个日志条目):
" id":"创建"
这里发生了什么:
showAction
。Serie
id。create
实体
NotFoundException
。您确定Serie
实体设置正确吗?通常id
应该是自动生成的整数:
/**
* @var integer
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="IDENTITY")
*/
private $id;
似乎在实例化新的Serie
时,它会被创建"字符串为$id
值。
另外,我无法弄清楚newAction
这里的目的是什么。它返回一个大数组,仅此而已。
我认为某些内容与路由混杂在一起,createAction()
是从其他地方调用的,而不是你想的那样,因为肯定它不会从newAction()
SerieController
中调用