发送带路径的post参数

时间:2015-05-12 11:06:04

标签: symfony post routing

我有一份要求清单,我可以删除一些,所以我为每个需求创建了一条路径:

<a href="{{ path('etudiant_suprimer_demande',{'id':demande.id} )}}

我有一个这样的控制器:

class EdudiantController extends Controller
{ //codes
  public function suprimerdemandeAction($id){

  //  echo $id;
    $em = $this->getDoctrine()
        ->getEntityManager();
    $demande = $em->getRepository('AcmeEstmSiteBundle:Demande')
        ->find($id);
    if ($demande == null) {
        throw $this->createNotFoundException('Demande[id='.$id.']inexistant');
    }

    if ($this->get('request')->getMethod() == 'POST') {
        $this->get('session')->getFlashBag()->add('info', 'Demande bien supprimée');
        return $this->redirect( $this->generateUrl('acme_estm_site_espace_etudiant'));

    }

    //return $this->render('SdzBlogBundle:Blog:supprimer.html.twig',array('demande' => $demande));
    return new Response();
}

路由是:

etudiant_suprimer_demande:
    path:     /profile/espace/suprimerdemande/{id}
    defaults: { _controller: AcmeEstmSiteBundle:Edudiant:suprimerdemande }
    methods: POST

我想要的是不要在URL中显示要求的ID,这意味着我希望使用post方法执行此操作但是我有这样的错误:

  

找不到&#34; GET / profile / espace / suprimerdemande / 3&#34;的路由:不允许的方法(允许:POST)

1 个答案:

答案 0 :(得分:1)

TL; DR

<form action="{{ path('etudiant_suprimer_demande',{'id': demande.id} )}}" method="post">
  <button type="submit">Delete</button>
</form>

说明

您现在拥有的代码只会生成<a>链接,当用户点击该链接时,他的用户代理会向服务器发送GET请求,从而产生错误。

要创建POST请求,您需要<form>

要回答有关在生成的网址中显示ID的问题,请查看this answer。您必须更改控制器和路由。