FuelPHP のクエリ文字列でのページネーション
FuelPHP 1.5/develop (1.5 の開発版) にクエリ文字列でのページネーション機能が追加されました。
コントローラ
コントローラのコードはこんな感じで使えます。
<?php ...略... $config = array( 'name' => 'default', // テンプレート名 'total_items' => $total, // 合計数 'per_page' => 30, // 1ページあたりの数 'uri_segment' => 'p', // クエリ文字列のパラメータ名 ); $pagination = \Pagination::forge('revision', $config); $revision_list = $wiki->get_revision_list( $pagination->per_page, // 1ページあたりの数 $pagination->offset // オフセット ); // ページネーションを生成してビューにセット $this->template->content->set_safe('pagination', $pagination->render());
uri_segment に文字列を指定すると、以下のようなクエリ文字列のページネーションになります。
http://example.jp/foo/page?p=2
数字 (URI セグメントの番号) を指定すれば、以下のような今までとおりの URI セグメントでのページネーションになります。
pagination_url の指定も以前は必須でしたが、省略すると通常は自動で検出されるようになりました。
テンプレート
ページネーションのテンプレートは設定ファイル fuel/core/config/pagination.php に複数定義されていますが、name で指定できます。省略すれば設定ファイルの active に指定されたテンプレートが使用されます。
この機能は、FuelPHP 1.4 から使えます。なお、1.4 で Pagination クラスは書き直され、少し API が変更されていますのでご注意ください。テンプレートは以下のように扱いやすく改良されました。詳しくは、Pagination - Classes - FuelPHP ドキュメント を参照願います。
fuel/core/config/pagination.php
<?php return array( // the active pagination template 'active' => 'default', // default FuelPHP pagination template, compatible with pre-1.4 applications 'default' => array( 'wrapper' => "<div class=\"pagination\">\n\t{pagination}\n</div>\n", 'previous' => "<span class=\"previous\">\n\t{link}\n</span>\n", 'previous-link' => "\t\t<a href=\"{uri}\">{page}</a>\n", 'previous-inactive' => "<span class=\"previous-inactive\">\n\t{link}\n</span>\n", 'previous-inactive-link' => "\t\t<a href=\"{uri}\">{page}</a>\n", 'regular' => "<span>\n\t{link}\n</span>\n", 'regular-link' => "\t\t<a href=\"{uri}\">{page}</a>\n", 'active' => "<span class=\"active\">\n\t{link}\n</span>\n", 'active-link' => "\t\t<a href=\"{uri}\">{page}</a>\n", 'next' => "<span class=\"next\">\n\t{link}\n</span>\n", 'next-link' => "\t\t<a href=\"{uri}\">{page}</a>\n", 'next-inactive' => "<span class=\"next-inactive\">\n\t{link}\n</span>\n", 'next-inactive-link' => "\t\t<a href=\"{uri}\">{page}</a>\n", ), // Twitter bootstrap 2.x template 'bootstrap' => array( 'wrapper' => "<div class=\"pagination\">\n\t<ul>{pagination}\n\t</ul>\n</div>\n", 'previous' => "\n\t\t<li>{link}</li>", 'previous-link' => "<a href=\"{uri}\">{page}</a>", 'previous-inactive' => "\n\t\t<li class=\"disabled\">{link}</li>", 'previous-inactive-link' => "<a href=\"{uri}\">{page}</a>", 'regular' => "\n\t\t<li>{link}</li>", 'regular-link' => "<a href=\"{uri}\">{page}</a>", 'active' => "\n\t\t<li class=\"active\">{link}</li>", 'active-link' => "<a href=\"{uri}\">{page}</a>", 'next' => "\n\t\t<li>{link}</li>", 'next-link' => "<a href=\"{uri}\">{page}</a>", 'next-inactive' => "\n\t\t<li class=\"disabled\">{link}</li>", 'next-inactive-link' => "<a href=\"{uri}\">{page}</a>", ), );
ビュー
ビューファイルでは以下でページネーションが表示されます。
<?php echo $pagination; ?>