我有一个 CakePHP 搜索表单,其中包含 'type'=>'get'. 。基本上,表单中的元素之一是图像类型的提交按钮。发布表单后,在 URL 中我总是会得到图像提交按钮的 x 和 y 坐标:

http://site.com/controller/action?x=22&y=36&查询=你好

有什么方法可以阻止坐标显示在 URL 中吗?原因是其他人可以使用相同的 URL 来执行相同的搜索,而链接中不会出现那些不直观的内容。

谢谢!

有帮助吗?

解决方案

您可以在按钮上使用一些javascript:

document.getElementById('myImageButton').onclick = function() {
    this.form.submit();
    return false;
};

另外,在你的beforeFilter功能控制器,你可以检查不需要的变量的存在,带他们出去,并重定向到URL不错。这样意味着你会做,虽然2个HTTP请求。

其他提示

听起来你想做一个 发布/重定向/获取.

以下是在 CakePHP 中执行此操作的两个示例:

重定向的优点 POST 到一个 GET 要求是:

  1. 用户没有获得“您要重新提交?对话如果他们刷新
  2. 结果页面/查询可以添加书签
  3. 您可以利用 CakePHP 的内置 SEF 路由,因此无需使用 URL /search?q=contact 你可以得到 /search/contact

代替使用submit辅助功能,用途button功能,并设置按钮式提交的。

echo $this->Form->**button**($this->Html->image('header_search_icon.png'), array(**'type'=>'submit'**));
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top