CodeIgniterのPaginationではまる

CodeIgniter徹底入門とユーザガイドを読みながら試行錯誤しているが、Paginationではまっていた。
Paginationクラスで自動的に複数のページへのリンクが作られるのはよいのだが、元々のページからどうやって次のページへとデータを渡せばよいのかがわからなかった。

実は同じように苦労している人は多いようだ。

まずはCodeIgniterのPaginationクラスの使い方を簡単にまとめてみる。

$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();

のような設定でPaginationクラスを使うと、2ページ目、3ページ目は

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

のようにして呼ばれるはず。
この20や40の位置は、

$config['uri_segment'] = 3;

のようにして指定できる。上記の例の場合はuri_segmentの値は3だ。
ユーザガイドを読むと、上記の20や40はページ番号のように書かれているが、実際はオフセット値が渡ってくる。自分はこれではまっていた。
それと、’uri_segment’ はうまく動作していないように見える。謎だ。

上記のように、Paginationにより自動生成されたリンクをクリックして呼び出されるページにはデフォルトではオフセット値しか渡すことができない。
このため、もっといろいろデータを渡したい場合には、CodeIgniter(に限らず):検索結果とページングの嫌な関係: CodeIgniterで発火する?
にあるようにセッションを使わないといけないと思われる。
このあたり、常識なのかも知れないが自分のような初心者にはわかりづらい。CodeIgniter本にはひとこと書いておいて欲しかった。
CodeIgniterのセッションクラスの使い方まとめ – devel-log.tar.gz

CodeIgniter徹底入門
CodeIgniter徹底入門 河合 勝彦 鈴木 憲治 安藤 建一

翔泳社 2008-06-10
売り上げランキング : 66699

Amazonで詳しく見る by G-Tools

4件のコメント

返信を残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

This site uses Akismet to reduce spam. Learn how your comment data is processed.