2012.12.31
基本的には「ページネーションクラス : CodeIgniter ユーザガイド 日本語版」の内容に近いのですが、1点記述不足でつまづいた箇所があったので、その記述を忘れないようにするためにメモ。
コントローラーに以下のように記述します。(わかりやすさを優先して、データ処理部分をModelに移動していません。ご了承ください。)
function class名() { $data = array();
//ページネーションに必要な設定を行う $config['base_url'] = 'http://localhost/class名/function名/'; //ベースURL $config['total_rows'] = $this->db->get('DBテーブル名')->num_rows(); //記事総数 $config['per_page'] = 10; //1ページあたりに表示したい件数 $config['num_links'] = 3; //表示しているページを基準に、番号の両端にいくつの数字を表示したいか //config設定を元に、イニシャライズ $this->pagination->initialize($config); //ページネーション対象の記事を取得して変数へ //カッコの中は(DBテーブル名, 1ページあたりに表示したい件数, 現在のページ(セグメントを取得)) $data['row'] = $this->db->get( 'DBテーブル名', $config['per_page'], $this->uri->segment(3) )->result(); //dataを持ってviewへ $this->load->view('home', $data);
}
ポイントはコメントの「//ページネーション対象の記事を取得して変数へ」という箇所。公式マニュアルには、これが記述されていなかったので悩みました。
view
ページネーションを表示したい箇所へ以下を記述します。
pagination->create_links(); ?>
疑問点
ルーティングでURLの飛び先を変更していると、ページ遷移はするけど、ページネーションの現在地が移動しないといった、よく分からない状況になっています。URLはindex.phpの削除以外は余計なことはしない方がいいのかもしれませんね。
参考