我在每個頁面上都有一個搜索表單。如果我使用表單助手,則默認爲$_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