2012-08-22 52 views
3

我有我的網站上搜索的形式,它看起來像這樣:如何在codeigniter中創建動態表單操作地址?

<form action="/search/results"> 
<input type="text" name="keyword"> 
<button type="submit"> // etc... 
</form> 

這使我陷入mysite.com/search/results/網頁,我處理後的參數。 當然,我可以使用GET法,那麼這將是

/search/results?keyword="some_keyword", 

但有可能使結果頁面的URL看起來像

mysite.com/search/results/keyword 
+0

使用隱藏的輸入。 –

+0

是的,我知道 - >但我的問題是如何使窗體重定向到這個地址? – pawel

+0

@Yan我認爲Pawel問如何製作一個友好的URL,而不是如何傳遞額外的信息。我沒有做太多的工作,但我確信這是基於獲取數據詢問htaccess重寫。 – Fluffeh

回答

4

我會使用jQuery

$('#myform').submit(function(){ 
    $(this).attr('action', $(this).attr('action') + "/" + $(this).find(input[name="keyword"]).val()); 
}); 

另一種可能性是在你的控制器中創建一個代理方法,如果你想在url中包含所有的發佈值:

public function post_proxy() { 
    $seg1 = $this->input->post('keyword'); 
    $seg2 = $this->input->post('keyword2'); 
    $seg3 = $this->input->post('keyword3'); 

    redirect('my_method/'.$seg1.'/'.$seg2.'/'.seg3); 
} 

在這種情況下,我會使用數組中的數據後,以簡化代碼:

<input type="text" name="kw[1]"> 
<input type="text" name="kw[2]"> 
<input type="text" name="kw[3]"> 

$segment_array = $this->input->post('kw'); 
$segments = implode("/", $segment_array); 
redirect('my_method'.$segments); 
+1

我喜歡post_proxy解決方案:) – pawel

+1

好又簡單的一個...很高興看到這個@Vlakarados。 – Gautam3164

+0

+1我喜歡post_proxy解決方案! – Anthony