【问题标题】:Send a post parameter with path发送带有路径的 post 参数
【发布时间】:2015-07-23 05:11:07
【问题描述】:

我有一个需求列表,我可以删除一些需求,所以我为每个需求创建了这样的路径:

<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 方法执行此操作,但出现此错误:

找不到“GET /profile/espace/suprimerdemande/3”的路由:不允许方法(允许:POST)

【问题讨论】:

    标签: symfony post routing


    【解决方案1】:

    TL;DR

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

    说明

    您现在的代码只生成一个&lt;a&gt; 链接,当用户单击它时,他的用户代理会向服务器发送GET 请求,因此您会得到错误。

    要创建POST 请求,您需要&lt;form&gt;

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

    【讨论】:

      猜你喜欢
      • 2018-04-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-07-22
      • 2020-11-18
      • 2019-12-04
      • 2011-06-25
      相关资源
      最近更新 更多