CodeIgniter 分頁類

2018-07-21 15:40 更新

分頁類

CodeIgniter 的分頁類非常容易使用,而且它 100% 可定制,可以通過動(dòng)態(tài)的參數(shù), 也可以通過保存在配置文件中的參數(shù)。

如果你還不熟悉 "分頁" 這個(gè)詞,它指的是用于你在頁面之間進(jìn)行導(dǎo)航的鏈接。像下面這樣:

? First  < 1 2 3 4 5 >  Last ?

例子

下面是一個(gè)簡單的例子,如何在你的 控制器 方法中創(chuàng)建分頁:

$this->load->library('pagination');

$config['base_url'] = 'http://example.com/index.php/test/page/';
$config['total_rows'] = 200;
$config['per_page'] = 20;

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

echo $this->pagination->create_links();

說明

如上所示,$config 數(shù)組包含了你的配置參數(shù),被傳遞到 $this->pagination->initialize() 方法。 另外還有二十幾個(gè)配置參數(shù)你可以選擇,但是最少你只需要這三個(gè)配置參數(shù)。下面是這幾個(gè)參數(shù)的含義:

  • base_url 這是一個(gè)指向你的分頁所在的控制器類/方法的完整的 URL ,在上面的這個(gè)例子里, 它指向了一個(gè)叫 "Test" 的控制器和它的一個(gè)叫 "Page" 的方法。記住,如果你需要一個(gè)不同格式的 URL , 你可以 重新路由 。
  • total_rows 這個(gè)數(shù)字表示你需要做分頁的數(shù)據(jù)的總行數(shù)。通常這個(gè)數(shù)值是你查詢數(shù)據(jù)庫得到的數(shù)據(jù)總量。
  • per_page 這個(gè)數(shù)字表示每個(gè)頁面中希望展示的數(shù)量,在上面的那個(gè)例子中,每頁顯示 20 個(gè)項(xiàng)目。

當(dāng)你沒有分頁需要顯示時(shí),create_links() 方法會(huì)返回一個(gè)空的字符串。

在配置文件中設(shè)置參數(shù)

如果你不喜歡用以上的方法進(jìn)行參數(shù)設(shè)置,你可以將參數(shù)保存到配置文件中。 簡單地創(chuàng)建一個(gè)名為 pagination.php 的文件,把 $config 數(shù)組加到這個(gè)文件中, 然后將文件保存到 application/config/pagination.php 。這樣它就可以自動(dòng)被調(diào)用。 用這個(gè)方法,你不再需要使用$this->pagination->initialize 方法。

自定義分頁

下面是所有的參數(shù)列表,可以傳遞給 initialization 方法來定制你喜歡的顯示效果。

$config['uri_segment'] = 3;

分頁方法自動(dòng)檢測(cè)你 URI 的哪一段包含頁數(shù),如果你的情況不一樣,你可以明確指定它。

$config['num_links'] = 2;

放在你當(dāng)前頁碼的前面和后面的“數(shù)字”鏈接的數(shù)量。比方說值為 2 就會(huì)在每一邊放置兩個(gè)數(shù)字鏈接, 就像此頁頂端的示例鏈接那樣。

$config['use_page_numbers'] = TRUE;

默認(rèn)分頁的 URL 中顯示的是你當(dāng)前正在從哪條記錄開始分頁,如果你希望顯示實(shí)際的頁數(shù),將該參數(shù)設(shè)置為 TRUE 。

$config['page_query_string'] = TRUE;

默認(rèn)情況下,分頁類假設(shè)你使用 URI 段 ,并像這樣構(gòu)造你的鏈接:

http://example.com/index.php/test/page/20

如果你把 $config['enable_query_strings'] 設(shè)置為 TRUE,你的鏈接將自動(dòng)地被重寫成查詢字符串格式。 這個(gè)選項(xiàng)也可以被明確地設(shè)置,把$config['page_query_string'] 設(shè)置為 TRUE,分頁鏈接將變成:

http://example.com/index.php?c=test&m=page&per_page=20

請(qǐng)注意,"per_page" 是默認(rèn)傳遞的查詢字符串,但也可以使用 $config['query_string_segment'] = '你的字符串' 來配置。

$config['reuse_query_string'] = FALSE;

默認(rèn)情況下你的查詢字符串參數(shù)會(huì)被忽略,將這個(gè)參數(shù)設(shè)置為 TRUE ,將會(huì)將查詢字符串參數(shù)添加到 URI 分段的后面 以及 URL 后綴的前面。:

http://example.com/index.php/test/page/20?query=search%term

這可以讓你混合使用 URI 分段 和 查詢字符串參數(shù),這在 3.0 之前的版本中是不行的。

$config['prefix'] = '';

給路徑添加一個(gè)自定義前綴,前綴位于偏移段的前面。

$config['suffix'] = '';

給路徑添加一個(gè)自定義后綴,后綴位于偏移段的后面。

$config['use_global_url_suffix'] = FALSE;

當(dāng)該參數(shù)設(shè)置為 TRUE 時(shí),會(huì)使用 application/config/config.php 配置文件中定義的 $config['url_suffix'] 參數(shù) 重寫 $config['suffix'] 的值。

添加封裝標(biāo)簽

如果你希望在整個(gè)分頁的周圍用一些標(biāo)簽包起來,你可以通過下面這兩個(gè)參數(shù):

$config['full_tag_open'] = '';

起始標(biāo)簽放在所有結(jié)果的左側(cè)。

$config['full_tag_close'] = '';

結(jié)束標(biāo)簽放在所有結(jié)果的右側(cè)。

自定義第一個(gè)鏈接

$config['first_link'] = 'First';

左邊第一個(gè)鏈接顯示的文本,如果你不想顯示該鏈接,將其設(shè)置為 FALSE 。

注解

該參數(shù)的值也可以通過語言文件來翻譯。

$config['first_tag_open'] = '';

第一個(gè)鏈接的起始標(biāo)簽。

$config['first_tag_close'] = '';

第一個(gè)鏈接的結(jié)束標(biāo)簽。

$config['first_url'] = '';

可以為第一個(gè)鏈接設(shè)置一個(gè)自定義的 URL 。

自定義最后一個(gè)鏈接

$config['last_link'] = 'Last';

右邊最后一個(gè)鏈接顯示的文本,如果你不想顯示該鏈接,將其設(shè)置為 FALSE 。

注解

該參數(shù)的值也可以通過語言文件來翻譯。

$config['last_tag_open'] = '';

最后一個(gè)鏈接的起始標(biāo)簽。

$config['last_tag_close'] = '';

最后一個(gè)鏈接的結(jié)束標(biāo)簽。

自定義下一頁鏈接

$config['next_link'] = '>';

下一頁鏈接顯示的文本,如果你不想顯示該鏈接,將其設(shè)置為 FALSE 。

注解

該參數(shù)的值也可以通過語言文件來翻譯。

$config['next_tag_open'] = '';

下一頁鏈接的起始標(biāo)簽。

$config['next_tag_close'] = '';

下一頁鏈接的結(jié)束標(biāo)簽。

自定義上一頁鏈接

$config['prev_link'] = '<';

上一頁鏈接顯示的文本,如果你不想顯示該鏈接,將其設(shè)置為 FALSE 。

注解

該參數(shù)的值也可以通過語言文件來翻譯。

$config['prev_tag_open'] = '';

上一頁鏈接的起始標(biāo)簽。

$config['prev_tag_close'] = '';

上一頁鏈接的結(jié)束標(biāo)簽。

自定義當(dāng)前頁面鏈接

$config['cur_tag_open'] = '';

當(dāng)前頁鏈接的起始標(biāo)簽。

$config['cur_tag_close'] = '';

當(dāng)前頁鏈接的結(jié)束標(biāo)簽。

自定義數(shù)字鏈接

$config['num_tag_open'] = '';

數(shù)字鏈接的起始標(biāo)簽。

$config['num_tag_close'] = '';

數(shù)字鏈接的結(jié)束標(biāo)簽。

隱藏?cái)?shù)字鏈接

如果你不想顯示數(shù)字鏈接(例如你只想顯示上一頁和下一頁鏈接),你可以通過下面的代碼來阻止它顯示:

$config['display_pages'] = FALSE;

給鏈接添加屬性

如果你想為分頁類生成的每個(gè)鏈接添加額外的屬性,你可以通過鍵值對(duì)設(shè)置 "attributes" 參數(shù):

// Produces: class="myclass"
$config['attributes'] = array('class' => 'myclass');

注解

以前的通過 "anchor_class" 參數(shù)來設(shè)置 class 屬性的方法已經(jīng)廢棄。

禁用 "rel" 屬性

默認(rèn) rel 屬性會(huì)被自動(dòng)的被添加到合適的鏈接上,如果由于某些原因,你想禁用它,你可以用下面的方法:

$config['attributes']['rel'] = FALSE;

類參考

classCI_Pagination

initialize([$params = array()])

參數(shù):

  • $params (array) -- Configuration parameters

返回: CI_Pagination instance (method chaining)

返回類型: CI_Pagination

使用提供的參數(shù)初始化分頁類。

create_links()

返回: HTML-formatted pagination
返回類型: string

返回分頁的代碼,包含生成的鏈接。如果只有一個(gè)頁面,將返回空字符串。

以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)