FuelPHPでページネーション
参考:http://w.builwing.info/2012/06/05/fuelphp(実践その6)
1. FuelPHPのページネーションは、残念ながらCakePHP程簡単ではありません。
FuelPHPでページネーションを行うには、いくつかの前処理をしなければなりません。
indexアクションを下記のように修正します。
app/classes/controller/collection.php
public function action_index(){ //ビューに渡す配列の初期化 $data=array(); //データ件数の取得 $count=Model_Collection::count(); //Paginationの環境設定 $config=array( 'pagination_url'=>'collection/index', 'uri_segment'=>3, 'num_links'=>4, 'per_page'=>5, 'total_items'=>$count, 'template'=>array( 'wrapper_start'=>'<div class="pagination"><ul>', 'wrapper_end'=>'</ul></div>', 'previous_start'=>'<li class="previous">', 'previous_end'=>'<li>', 'previous_inactive_start'=>'<li class="active"><a href="#">', 'previous_inactive_end'=>'</a></li>', 'next_inactive_start'=>'<span class="active"><a href="#">', 'next_inactive_end'=>'</a></span>', 'next_start'=>'<li class="next">', 'next_end'=>'</li></ul>', 'active_start'=>'<span class="active"><a href="#">', 'active_end'=>'</a></span>', )); //Paginationのセット Pagination::set_config($config); //モデルCollectionからページネーションデータを取得 $data['collections']=Model_Collection::find() ->order_by('created','desc') ->limit(Pagination::$per_page) ->offset(Pagination::$offset) ->get(); //テンプレートファイルにデータの引き渡し $this->template->title="WinRoad徒然草"; $this->template->content = View::forge('collection/index', $data); }
2. 次に、ページネーション用のリンクを作成するためにビューファイルも修正します。修正といっても、たった1行を追加するだけです。
app/views/collection/index.php
- $count=Model_Collection::count();
ページネーションをするには、まず全データのデータ件数を取得する必要があります。countメソッドで、まず最初に全データ件数を取得します。 - ‘pagination_url’=>’リンク先のURL’
ページネーションクラスの設定に必要なリンク先のURLを指定します。indexページをページネーションで表示しますので、’collection/index’を指定しています。 - ‘uri_segment’=>URIセグメント番号
ページ番号を指定するURLセグメント番号を指定します。 第1セグメントがコントローラ名、第2セグメントがアクション名ですので、第3セグメントを指定します。 - ‘num_links’=>表示リンク数
現在のページの前後何ページ分を表示するかを指定します。前半は、アクティブページを加えたページ数、後半は、指定したページ数を表示します。最高で、指定リンク数の倍のページを表示することになります。 - ‘per_page’=>1ページあたりのデータ件数
1ページにデータを何件表示するかを指定します。 - ‘total_items’=>全データ件数
表示する全データ件数を指定します。 ここでは、countメソッドで取得したデータ件数を指定しています。 - ‘template’=>array()
ページネーションエレメントを作成する為のHTMLマークアップを指定します。
Warning: Undefined variable $postID in /home/foodheart/flashbuilder-job.com/public_html/wp-content/themes/stingerplus/single.php on line 87