简单搜索:使用CodeIgniter将表单变量传递给URI
-
03-07-2019 - |
题
我的每个页面都有一个搜索表单。如果我使用表单助手,则默认为 $ _ POST
。我希望搜索字词显示在URI中:
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;
}
?>
我之前已经使用了很多次。
其他提示
据我所知,没有办法通过简单的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>
查看这篇文章,了解如何与分段网址一起启用GET查询字符串。
http://codeigniter.com/forums/viewthread/56389/#277621一>
启用后,您可以使用以下方法检索其他变量。
// url = http://example.com/search/?q=text
$this->input->get('q');
这样做更好,因为您无需更改allowed_uri_chars配置设置。您可能会收到“您提交的URI已禁止使用的字符”如果您只是将用户输入的任何内容放入URI中,则会出错。
我对CodeIgniter知之甚少,但它是PHP,所以不应该 $ _ GET
吗?您可以像使用Google一样格式化您的网址: mysite.com/search?q=KEYWORD
并使用 $ _ GET ['q']
拉出数据。
此外,搜索表单似乎是使用POST的不好的地方; GET是可收藏的,并不意味着某些东西正在改变服务器端。
不隶属于 StackOverflow