2011-07-04 178 views
2

我有一個頁面/討論,我想在其中實現分頁。現在,我希望第一次將該頁面加載爲/ discussion,這意味着該行爲就好像是/ discussion/page/1。對於其他網頁,網址將爲/ discussion/page/$ pagenumber。Codeigniter分頁概念問題

現在,問題是索引()。通常,我初始化index()中的所有頁面數據,然後用初始化的數據加載視圖。但是,在這裏我將不得不在index()中初始化默認頁面的東西,然後在page()中分頁。那麼,是否有辦法將另一組數據從page()發送到視圖?我不想加載視圖,因爲它將由index()加載。

但是,我認爲這是不可能做到我上面提到的。所以,也許我應該保持我的index()爲空,並在頁面中執行所有初始化(),然後在那裏加載視圖。你說什麼?

回答

4

您不需要「頁面」和「索引」方法,只需使用route即可。

使用一個index()方法和丟棄page()方法:

$route['discussion/page/(:num)'] = 'discussion/index/$1'; 

/discussion仍然給你第1頁,請求discussion/page/32將映射到discussion/index/32

這是假設你抓住頁碼作爲參數(網址段),如下所示:

function index ($page = 1) {} 

如果你正在做其他事情,一條路線仍然適合,也許只是不是所提供的路線。

+0

我試過了,它似乎工作了一下。但是,那麼所有的圖像文件路徑都會改變。我將圖片作爲../images/imagename.jpg獲取,但在這些分頁更改後,我必須使用../../images/imagename.jpg獲取它們。 添加這條路徑對路徑做了一些事情:(。 – Blueboye

+0

這個問題真正在於使用相對路徑的圖像。使用完整的URL,'/ absolute/paths/to-image.jpg',或者只是使用'img ()'函數,當你處理動態URL時,你不能依賴相對路徑 –

+0

很酷,這工作:)。還有一件事:分頁區域的第一頁是/討論/頁面。我如何將其更改爲/ discuss/page/1或僅僅是/討論? – Blueboye

1

我建議看看PEAR的真棒Pager package。它會自動生成一個尋呼機,並根據(GET)輸入變量爲您提供正確的索引。

0

我不太清楚你的問題是什麼。

如果你有一個index()的方法,你可以在那裏設置所有的分頁信息,記得你必須告訴分頁庫哪個uri段將用來獲取頁碼,而這與這個沒有任何關係index()

有控制器中沒有page()方法,所有的頁面的是相同的index()與一組不同的分頁數據,由定義爲頁碼的uri_segment給出,這意味着所有未相關的東西分頁查詢集在頁面中保持不變。

+0

那麼,網址將如何(不同的網頁)? – Blueboye

+0

它可以看起來不管你想要的,/討論/索引/ 2或/討論/索引/頁面/ 2,(是'討論'控制器的名稱和'索引'的方法。 請注意,如果你想從url中刪除'index'並且只使用'page',你將不得不在路由配置文件中設置該URL: '$ route ['discussions/page /:any'] =「討論/ index/page/$ 1「;' – ramono

0

這聽起來像你試圖讓你的頁面方法裝飾你的索引方法。不知道更多關於控制器的整體結構,是不是真的有非常多說什麼,但它聽起來像下面將幫助:

function page($pos) 
{ 
    $this->index($pos); 
} 

// a default parameter lets you ensure that this does not neet to have a page set. 
function index($pos = 0) 
{ 
    // when calling the DB (I'm guessing that is where the pagination really happens) 
    // COUNT should be defined in the config if possible. 
    $this->db->where/*... add more here...*/->limit(COUNT, $pos); 
} 

實際上,你應該看看你的URI路由類,或使用_resolve方法,但這應該做你需要的。