我的每个页面都有一个搜索表单。如果我使用表单助手,则默认为 $ _ 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>

这是最佳解决方案:

$uri = 

这是最佳解决方案:

<*>

感谢 erunways

SERVER['REQUEST_URI']; $pieces = explode("/", $uri); $uri_3 = $pieces[3];

感谢 erunways

我对CodeIgniter知之甚少,但它是PHP,所以不应该 $ _ GET 吗?您可以像使用Google一样格式化您的网址: mysite.com/search?q=KEYWORD 并使用 $ _ GET ['q'] 拉出数据。

此外,搜索表单似乎是使用POST的不好的地方; GET是可收藏的,并不意味着某些东西正在改变服务器端。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top