FuelPHP

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

-FuelPHP