【问题标题】:Put post parameters into URL将post参数放入URL
【发布时间】:2014-07-17 05:31:55
【问题描述】:

我使用的是 CakePHP 2.5.2。我有标准表格,我通过 POST 方法发送。

我在控制器中捕捉到这篇文章并显示来自数据库的数据,但是当有人刷新页面时,我无法再次读取数据,因为参数是由 POST 请求提供的。所以,我想建立这样的网址:

http://example.com/controller/action/**firstDataFromPost**/**secondDataFromPost**

它使我的网站可刷新,但我不知道如何修改 URL。

【问题讨论】:

  • 你在那里做错了。您正在寻找的模式称为 PRG 并且之后还需要获取 - 并且正在使用查询字符串。查看github.com/CakeDC/search - 这是正确实施的地方。

标签: php url cakephp


【解决方案1】:

这里实际上有两个主要选项:

使用 GET

使用 GET HTTP 方法而不是 POST 将意味着您的变量会自动附加到查询字符串的末尾:

http://example.com/controller/action?firstDataFromPost&secondDataFromPost

POST 后重定向

您可以将表单发布到一个操作,该操作将组装所需的变量并将您重定向到一个不再具有依赖 HTTP 操作的页面。假设您发帖到receive() 操作:

public function receive() {
    $var1 = $this->data['MyForm']['my_field1'];
    $var2 = $this->data['MyForm']['my_field1'];
    $this->redirect(array('action' => 'showresults', $var1, $var2));
}

那么您的showresults() 操作传递了随时可访问的参数:

public function showresults($var1, $var2) {
    // ... display your results here using these variables
}

... 你的 URL 看起来像这样:

http://example.com/controller/showresults/VAR1HERE/VAR2HERE

【讨论】:

  • 如果您正在实施的是搜索(听起来您可能会这样做),请务必使用 GET。 POST 一般用于你写数据的时候。
  • 谢谢你的帮助真的很快就好了,如果我通过get方法发送“ó”、“ł”、“ą”等utf8字符?
  • 我之前没有尝试过,CakePHP 可能会在内部将它们转换为“URL 友好”字符。如果没有,您可能必须通过utf8_encode()urlencode() 传递字符串,并在病房后解码
猜你喜欢
  • 2023-04-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-08-22
  • 2013-12-25
  • 1970-01-01
相关资源
最近更新 更多