2017-07-17 68 views
1

我正嘗試使用codeigniter建立分頁搜索功能。問題是我無法將搜索查詢放在頁面前的Url上,以便使用我的控制器中的get方法訪問它。我怎樣才能得到的網址如下所示:Codeigniter使用分頁類將變量放在頁面前面的uri段

http://localhost/project/shop/2/search?search_query=bolts 

2是分頁類用於識別頁碼的uri段。下面是我的控制器的分頁類配置的一部分:

$search_query=$this->input->get('search_query'); 

$config['base_url'] = base_url().'shop/search?search='.$search_query; 
$config['total_rows'] = $this->ProductModel->countallByTerm($search query); 
$config['per_page'] = 2; 

$start = ($this->uri->segment(3)) ? $this->uri->segment(3) : 0; 

$data['products']=$this->ProductModel->search($search_query, $config['per_page'], $start); 
$this->pagination->initialize($config); 

當我點擊我的分頁鏈接「下一頁」這也帶來以下鏈接:

http://localhost/project/shop/search?search=bolts/2 

這是我的HTML在與負責提交搜索查詢的表格視圖代碼:

<form class="" action="<?php echo site_url('shop/search') ?>" method="get"> 
     <div class="input-field col md10 s10"> 
      <i class="material-icons prefix">search</i> 
      <input type="text" name="search" class="validate" required> 
      <label for="search">Search Products</label> 
     </div> 
     <div class="col md2 s2"> 
      <input type="submit" class="btn" value="search" name="submit" value=""> 
     </div> 
     </form> 

請幫

+0

你可以創建一個這樣的網址:HTTP://本地主機/項目/店/ 2 /螺栓所以你可以直接將參數作爲Url Segment。 –

+0

好的。這有助於。但我如何提交一個表單值到一個URI段 – tendaitakas

+0

你可以通過Jquery實現,即在輸入搜索字段後點擊任何提交按鈕,你可以將它重定向到上面提到的url。 –

回答

1

更改您的格式如下:

<form class="" action="<?php echo site_url('shop/search') ?>" method="get"> 
     <div class="input-field col md10 s10"> 
      <i class="material-icons prefix">search</i> 
      <input type="text" name="search" id="search" class="validate" required> 
      <label for="search">Search Products</label> 
     </div> 
     <div class="col md2 s2"> 
      <input type="button" id="SubmitButtonForForm" class="btn" value="search" name="submit" value=""> 
     </div> 
     </form> 

而且你還必須做與jQuery的處理:

var url = '<?php echo $_SERVER['REQUEST_URI'];?>';//Made Changes Here. 
//It will output the current Page's URl for EG:http://localhost/project/shop/2 
//1 or 2 or... based on your pagination. 

$("#SubmitButtonForForm").on("click",function(e){ 
    //Add your Code for Validations Here and put a condition that if the form is validated then only process the following code. 
    var searchString = $("#search").val(); 
    e.PreventDefault(); 
    var redirectURl = url + "/" + searchString; 
    //Redirect with window location method of javascript. 
    window.location = redirectURl; 
}) 
+0

謝謝。但正如我在我的問題中指出的那樣,問題只出現在單擊下一頁按鈕時,表單submision的前2個結果出現的很好,但是當我單擊「下一頁」按鈕查看下一組結果時該網址被混淆了。其次,表單提交按鈕不再有效。控制檯正在輸出:**未捕獲的SyntaxError:無效的正則表達式標誌**。表單只在我輸入時提交。 – tendaitakas

+1

爲「下一頁」添加生成的Url是什麼?第二,我們已將提交按鈕更改爲簡單按鈕,以便我們可以重定向到自定義URL而不是Form操作。 –

+0

這是當表單被提交併給我一個準確的第一組結果時生成的URL:** http:// localhost/shop/shop/search?search = bolts **。這是我點擊'下一頁'按鈕時生成的網址:** http:// localhost/shop/shop/search/bolts/2 **。由於搜索變量丟失,並且由於codeigniter分頁類是生成頁碼** 2 **的分類,所以我的第二組結果變得不準確。 – tendaitakas