「Php/fuelphp/pagination」の版間の差分
提供: 初心者エンジニアの簡易メモ
(→ページネーションサンプル) |
|||
行70: | 行70: | ||
<<nowiki />!-- 1 2 3 4 --> | <<nowiki />!-- 1 2 3 4 --> | ||
<?= $pages_render; ?> | <?= $pages_render; ?> | ||
− | + | <<nowiki />!-- 1 --> | |
+ | <?= $current_page; ?> | ||
==公式paginationマニュアル== | ==公式paginationマニュアル== | ||
http://fuelphp.com/docs/classes/pagination.html | http://fuelphp.com/docs/classes/pagination.html |
2015年10月26日 (月) 00:27時点における版
ページネーションサンプル
- model/paginator.php
class Model_Paginator { private $_contents = array(); private $_pager; private $_per_page = 9; // 1ページ内のコンテンツ数 private $_num_links = 2; // ページリンク数の半分 private $_pagination_url; public function __construct($contents, $per_page = null) { $this->_contents = $contents; if ($per_page) { $this->_per_page = $per_page; } } // 日本語urlを含む場合は必ず指定 public function setPaginationUrl($pagination_url) { $this->_pagination_url = $pagination_url; } private function _makePager() { $config = array( 'pagination_url' => $this->_pagination_url, 'uri_segment' => 'page', 'per_page' => $this->_per_page, 'num_links' => $this->_num_links, 'total_items' => count($this->_contents), ); $this->_current_page = Input::get($config['uri_segment']); if (!$this->_current_page) $this->_current_page = 1; $this->_pager = Pagination::forge('page', $config); // 前へaタグカスタマイズ $this->_pager->__set('previous-link', "\t\t<a href='{uri}' class='data-role-button'>{page}</a>\n"); // 後へaタグカスタマイズ $this->_pager->__set('next-link', "\t\t<a href='{uri}' class='data-role-button'>{page}</a>\n"); // 前へaタグ非アクティブカスタマイズ $this->_pager->__set('previous-inactive-link', "\t\t{page}\n"); // 後へaタグ非アクティブカスタマイズ $this->_pager->__set('next-inactive-link', "\t\t{page}\n"); } public function getCurrentItems() { return array_slice($this->_contents, $this->_per_page * ($this->_current_page - 1), $this->_per_page); } public function getPages() { $this->_makePager(); return $this->_pager; } }
- controller/sample.php
$paginator = new Model_Paginator($images); $paginator->setPaginationUrl('/word/' . urlencode($word)); // 日本語のurlを含む場合は必須。 $pager = $paginator->getPages(); $images = $paginator->getCurrentItems(); $data = array( 'images' => $images, 'current_page' => $pager->current_page, 'previous_html' => $pager->previous('前'), 'next_html' => $pager->next('後'), ); $this->template->content = View::forge('sample/index', $data); $this->template->content->set_safe("previous_html", $pager->previous()); // html自動エスケープ解除 $this->template->content->set_safe("next_html", $pager->next()); // html自動エスケープ解除
- views/sample/index.php
<!-- « 1 2 3 4 » --> <?= $render_html; ?> <!-- « --> <?= $previous_html; ?> <!-- » --> <?= $next_html; ?> <!-- 1 2 3 4 --> <?= $pages_render; ?> <!-- 1 --> <?= $current_page; ?>