2015年1月20日火曜日

Fat-Free Frameworkで、ページネーション(ページ送り)

Fat-Free Frameworkで、ページネーション(ページ送り)です。

$result = $mapper->paginate(0, 3);

としてデータ取得すると、メインとなるオブジェクトデータは、「subset」という配列で返ってきます。その他、「total(全件)」「limit(1ページの表示件数)」「count(ページ数)」「pos(現在のページ番号)」といったデータがまとめて返ってきます。

// page 1
$result = $mapper->paginate(0, 3);
/*
array(4) {
  ["subset"] => array(3) {
    [0] => mapper object, #ID: 1, title: F3 for the win
    [1] => mapper object, #ID: 2, title: Once upon a time
    [2] => mapper object, #ID: 3, title: Barbar the Foo
  }
  ["total"] => int(4)
  ["limit"] => int(3)
  ["count"] => float(2)
  ["pos"] => int(0)
}
*/

// page 2
$result = $mapper->paginate(1, 3);
/*
array(4) {
  ["subset"] => array(1) {
    [0] => mapper object, #ID: 4, title: untitled
  }
  ["total"] => int(4)
  ["limit"] => int(3)
  ["count"] => float(2)
  ["pos"] => int(1)
}
*/
当初、意味がわからずに、理解するまでに、かなり時間がかかってしまいました。理解できてみれば、非常に便利に使えることがわかります。

index.php
$f3->route('GET /blog/page/@page',
  function($f3) use ($db) {
    // ページ番号
    $page = $f3->get('PARAMS.page');
    $page = filter_var($page, FILTER_VALIDATE_INT);
    $page = $page - 1;

    // 1ページの表示件数
    $onepage = 10 ;

    // ブログテーブルからデータ取得
    $blog = new DB\SQL\Mapper($db,'blogs');
    $pages = $blog->paginate($page, $onepage, 
                array('public = ? ', 1), 
                array('order'=>'created_at')
             );

    // Viewへ出力
    $f3->set('blogs', $pages["subset"]);
    $f3->set('total', $pages["total"]);
    $f3->set('limit', $pages["limit"]);
    $f3->set('count', $pages["count"]);
    $f3->set('pos', $pages["pos"]);
    $f3->set('content','blog.htm');
    echo Template::instance()->render('layout.htm');
  }
);

実際に設定してみたのが、こちら

参考サイト
paginate(Fat-Free Framework for PHP)

0 件のコメント:

コメントを投稿