2017-03-31 114 views
0

我的编辑/删除工作正常,当我继续在我的项目上工作时,它停止了工作。我尝试编辑或删除时收到此消息。编辑/删除不起作用symfony 3

DELETE /灌木/ 1 /编辑“未找到路线‘’:不允许的方法(允许:GET,POST,HEAD)”

我以为控制器处理这还是我需要的东西在路由.yml呢?

我有这个在我的控制器:

/** 
    * Displays a form to edit an existing Shrubs entity. 
    * 
    * @Route("/{id}/edit", name="shrubs_edit") 
    * @Method({"GET", "POST"}) 
    */ 
    public function editAction(Request $request, Shrubs $shrub) 
    { 
    $deleteForm = $this->createDeleteForm($shrub); 
    $editForm = $this->createForm('AppBundle\Form\ShrubsType', $shrub); 
    $editForm->handleRequest($request); 

    if ($editForm->isSubmitted() && $editForm->isValid()) { 
     $em = $this->getDoctrine()->getManager(); 
     $em->persist($shrub); 
     $em->flush(); 

     return $this->redirectToRoute('shrubs_edit', array('id' => $shrub->getId())); 
    } 

    return $this->render('shrubs/edit.html.twig', array(
     'shrub' => $shrub, 
     'edit_form' => $editForm->createView(), 
     'delete_form' => $deleteForm->createView(), 
    )); 
} 

/** 
* Deletes a Shrubs entity. 
* 
* @Route("/{id}", name="shrubs_delete") 
* @Method("DELETE") 
*/ 
public function deleteAction(Request $request, Shrubs $shrub) 
{ 
    $form = $this->createDeleteForm($shrub); 
    $form->handleRequest($request); 

    if ($form->isSubmitted() && $form->isValid()) { 
     $em = $this->getDoctrine()->getManager(); 
     $em->remove($shrub); 
     $em->flush(); 
    } 

    return $this->redirectToRoute('shrubs_index'); 
} 

/** 
* Creates a form to delete a Shrubs entity. 
* 
* @param Shrubs $shrub The Shrubs entity 
* 
* @return \Symfony\Component\Form\Form The form 
*/ 
private function createDeleteForm(Shrubs $shrub) 
{ 
    return $this->createFormBuilder() 
     ->setAction($this->generateUrl('shrubs_delete', array('id' => $shrub->getId()))) 
     ->setMethod('DELETE') 
     ->getForm() 
    ; 
} 

我的编辑页面有这样的:

<button type="submit" id="register-submit-btn" class="btn btn-success">Edit</button> 

    {{ form_start(delete_form) }} 
    <input type="submit" value="Delete"> 
    {{ form_end(delete_form) }} 

如果我需要的东西为我的routing.yml我会怎么加?

回答

0

尝试在路由中添加DELETE方法,这是错误消息所说的内容。 您使用DELETE方法,但只允许GET, POST

/** 
* Displays a form to edit an existing Shrubs entity. 
* 
* @Route("/{id}/edit", name="shrubs_edit") 
* @Method({"DELETE", "GET", "POST"}) 
*/ 
public function editAction(Request $request, Shrubs $shrub) 
+0

工作,谢谢。 – Sowa