【问题标题】:Symfony/Routing: Using POST to Avoid Query Params in URLSymfony/Routing:使用 POST 避免 URL 中的查询参数
【发布时间】:2011-07-30 11:49:44
【问题描述】:

我想将 id 从一个操作传递到下一个操作,但我不希望它出现在 URL 中。有办法隐藏吗?

使用 Symfony,我创建了一个注册完成页面,其 URL 应为 /signup/done 处理表单后,我想重定向到signupSuccess 操作并传递最近创建的ID 以供将来使用。所以我用...

$this->redirect('@signup_done?id=' . $sign_up->getId());

路由如下:

signup_done:
  url:   /signup/done
  param: { module: SignUp, action: signupDone }

我在最后避免了 :id ,因为我不希望它出现在 URL 中。 但生成的 URL 是/signup/done?id=1

作为一个实验,我尝试将它放在模板上。

<?php echo link_to('Sign-up again', '@signup_done?id=1', 'post=true') ?>

即使在使用 post 时,查询参数也会出现在 URL 中。

需求是:我想将 id 从一个动作传递到下一个动作,但我不希望它在 URL 中看到。有办法隐藏吗?

【问题讨论】:

    标签: url parameters symfony1 routing http-headers


    【解决方案1】:

    我使用$request-&gt;setParameter('id', $id) 将 id 设置为请求中的参数,并且在下一个操作中可用。

    这使 URL 保持干净。

    【讨论】:

      【解决方案2】:

      如果你想发帖,你需要一个表格。回到 symfony 1.2 中,有一些你可以调用的助手并让你做到这一点——但他们被删除了,以促进推广好的代码。

      根据您希望“再次注册”文本的外观,您可以创建一个简单的表单和一个提交按钮,或者创建一个链接,附加一个点击侦听器,然后通过 JS 在其中创建一个表单,最后发布它。

      您在url_forlink_to 中传递给路由的任何参数都将在 get 参数中结束。

      【讨论】:

      • 但我在 link_to 中提到的 post=true 属性确实触发了通过 JS 提交的表单。只是超链接似乎有查询参数,页面的 URL 也有。我的路由定义有问题吗?
      猜你喜欢
      • 2016-12-21
      • 2020-02-22
      • 1970-01-01
      • 2019-10-26
      • 2018-09-28
      • 1970-01-01
      • 1970-01-01
      • 2013-04-10
      • 1970-01-01
      相关资源
      最近更新 更多