kohanaのテスト12-17・・・ページネーションを改善する
github を見ていたら、Kohana 3.2 Pagination なるリポジトリを見つけました。早速 NetBeans でクローンを作って検討してみました。結論としては使えません。これは未完成ですね。生成する URL が index を含んでいて気に入りません。各メソッドも作者の意図通りには動いていないようです。
しかしビューは使えそうなので、思いっきりシンプルに作りなおしてみました。
今回追加変更したファイル
詳細は github を見て下さい。
・kohana/application/classes/contents/pagenation.php
・kohana/application/classes/contents/upload.php
・kohana/application/views/pagination/basic.php
・kohana/application/views/pagination/floating.php
・kohana/application/views/test12/upload/media.php
コントローラ
ページネーションの表示部は単独でスニペットにしてみました。
・・kohana/application/classes/contents/pagenation.php
<?php defined('SYSPATH') or die('No direct script access.'); class Contents_Pagenation { static function setup($total_pages, $current_page, $url, $view = 'pagination/basic') { $previous_page = ($current_page > 1) ? $current_page - 1 : FALSE; $next_page = ($current_page < $total_pages) ? $current_page + 1 : FALSE; $first_page = ($current_page == 1) ? FALSE : 1; $last_page = ($current_page >= $total_pages) ? FALSE : $total_pages; $view = View::factory($view); $view->url = $url; $view->total_pages = $total_pages; $view->current_page = $current_page; $view->previous_page = $previous_page; $view->next_page = $next_page; $view->first_page = $first_page; $view->last_page = $last_page; return $view->render(); } } ?>
・kohana/application/classes/contents/upload.php
<?php defined('SYSPATH') OR die('No direct access allowed.'); class Contents_Upload { static function images($page, $author) { $model = Model::factory('test12_posts'); if ($author) { $array = array('post_author' => $author); } else { $array = NULL; } $select = $model->selectimage($array); $paginator = Zend_Paginator::factory($select); if (!$page) { $page = 1; } $pagecount = $paginator->count(); $page = ($page > $pagecount) ? $pagecount : $page; $paginator->setCurrentPageNumber($page); $url = '/kohana/test12_upload?page='; $pagination = Contents_Pagenation::setup($pagecount, $page, $url, 'pagination/floating'); $view = View::factory('test12/upload/media'); $view->data = $paginator; $view->single = FALSE; $view->page = $page; $view->pagination = $pagination; return $view->render(); } } ?>
動作試験
なにかクールになった感じがします。kohana 3.2 でページネーションが削除された理由が良くわかりました。