2013-06-05 46 views
0

我使用的是一對夫婦的URI變量處理排序表,這樣變量追加到URL後分頁的「/頁/ X」

.../page/7/sortby/serial_number/orderby/desc

,你可以看到,我還使用內置CI分頁庫。我現在的問題是,使用$this->pagination->create_links();創建的鏈接剝離了URI的排序變量,使得難以在頁面之間維護這些排序選項。

我該如何將這些變量sortby/foo/orderby/bar追加到由分頁庫創建的鏈接的URI?

回答

1

我找到了答案,感謝WesleyMurch帶領我朝着正確的方向前進。爲了始終在URI鏈接的頁面變量作爲最後一個(使用CI的分頁庫時,這是必要的),我用這個

$totalseg = $this->uri->total_segments(); 
$config['uri_segment'] = $totalseg; 

然後按照WesleyMurch的想法,我重建了BASE_URL,

​​

,當然與所有正確的配置選項初始化分頁

$this->pagination->initialize($config);

1

您可以使用base_url選項,並且頁碼段必須是最後一個。這有點煩人,但我認爲這是最簡單的方法。

// Get the current url segments 
$segments = $this->uri->uri_to_assoc(); 

// Unset the "page" segment so it's not there twice 
$segments['page'] = null; 

// Put the uri back together 
$uri = $this->uri->assoc_to_uri($segmenmts); 

$config['base_url'] = 'controller/method/'.$uri.'/page/'; 
// other config here 

$this->pagination->initialize($config); 
+0

謝謝!你讓我知道了正確的答案,但這不完全是。因此,我發佈我的解決方案並將其標記爲答案,以便其他人可以輕鬆地看到完整答案 – ejfrancis

1

我用ejfr的答案ancis但是......

如果由於某種原因,用戶放在網址的網頁VAR而不是數字或負數,我建議做一個驗證之前設置$配置[「uri_segment」],像這樣的:

$totalseg = $this->uri->segment($totalseg)>0 && 
      is_numeric($this->uri->segment($totalseg))? 
         $totalseg : NULL; 

我希望它有幫助!