参考: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マークアップを指定します。