我在每个页面上都有一个搜索表单。如果我使用表单助手,则默认为$_POST
。我希望在URI中显示搜索字词:简单搜索:将表单变量传递给URI使用CodeIgniter
http://example.com/search/KEYWORD
我已经在Google上呆了大约一个小时,但无济于事。由于本地URI约定,我只找到有关$_GET
基本上被禁用的文章。我不能成为第一个想要这种功能的人,是吗?提前致谢!
我在每个页面上都有一个搜索表单。如果我使用表单助手,则默认为$_POST
。我希望在URI中显示搜索字词:简单搜索:将表单变量传递给URI使用CodeIgniter
http://example.com/search/KEYWORD
我已经在Google上呆了大约一个小时,但无济于事。由于本地URI约定,我只找到有关$_GET
基本上被禁用的文章。我不能成为第一个想要这种功能的人,是吗?提前致谢!
如果你处理的是没有启用JS的人,那么有更好的解决方法。
查看:
<?php echo form_open('ad/pre_search');?>
<input type="text" name="keyword" />
</form>
控制器
<?php
function pre_search()
{
redirect('ad/search/.'$this->input->post('keyword'));
}
function search()
{
// do stuff;
}
?>
我以前用这个了很多次。
我对CodeIgniter了解不多,但是它是PHP,所以$_GET
仍然可以使用吗?您可以像Google那样格式化您的网址:mysite.com/search?q=KEYWORD
并使用$_GET['q']
提取数据。
此外,搜索表单似乎是一个糟糕的地方使用POST; GET可加入书签,并不意味着某些内容正在改变服务器端。
据我所知,没有方法用简单的POST完成此操作。但是,您可以通过Javascript访问表单并更新目的地。例如:
<form id="myform" onsubmit="return changeurl();" method="POST">
<input id="keyword">
</form>
<script>
function changeurl()
{
var form = document.getElementById("myform");
var keyword = document.getElementById("keyword");
form.action = "http://mysite.com/search/"+escape(keyword.value);
return true;
}
</script>
Codeigniter问题 - 搜索字符串中的撇号将不会被CI URI库接受:“您提交的URI已禁止使用字符。 – jmccartie 2009-04-22 21:40:45
查看这篇文章,了解如何启用GET查询字符串和分段URL。
http://codeigniter.com/forums/viewthread/56389/#277621
使您可以使用下面的方法来获取额外的变量之后。
// url = http://example.com/search/?q=text
$this->input->get('q');
这样更好,因为您不需要更改allowed_uri_chars配置设置。如果您只是将用户输入的任何内容放入URI中,您可能会收到“您提交的URI不允许使用字符”错误。
这里是最好的解决办法:
$uri = $_SERVER['REQUEST_URI'];
$pieces = explode("/", $uri);
$uri_3 = $pieces[3];
感谢erunways!
号码在Codeigniter – jmccartie 2008-10-22 20:54:37
中禁用了“GET”,但您可以在此启用 – 2008-11-26 01:41:30