Symfony / Routing:使用POST避免URL中的查询参数

时间:2011-04-06 03:44:24

标签: url parameters symfony1 routing http-headers

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

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

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

路由如下:

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

我最后避免使用:id,因为我不想在URL中使用它。 但结果网址为/signup/done?id=1

就像实验一样,我尝试将其放在模板上。

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

即使使用post,查询参数也会显示在URL中。

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

2 个答案:

答案 0 :(得分:1)

如果你想发布,你需要一个表格。回到symfony 1.2,有一些帮助你可以打电话给你,但是他们被删除了,以促进推广好的代码。

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

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

答案 1 :(得分:1)

我使用$request->setParameter('id', $id)将ID设置为请求中的参数,并在下一个操作中提供。

这使网址保持清洁。