Phalcon ページングの実装

広告

今回はPhalconでページングを実装していきます。
実装が面倒なページングもフレームワークの力を借りて実装すれば楽に実現できます。

Controller側


// ページングモジュールの利用
use Phalcon\Paginator\Adapter\Model as PaginatorModel;

class sampleController extends ControllerBase
{
public function indexAction()
{
// view側でpageパラメータをセットしてgetで取得
$currentPage = $this->request->get('page', ['int'], 1);

// 表示データ取得
$myData = new MyData();
$listObject = $myData->find();

// ページングの設定
$paginator = new PaginatorModel([
"data" => $listObject,
"limit" => 10, // 1ページで表示するデータの件数
"page" => $currentPage,
]);
$page = $paginator->getPaginate();

// ページングをセット
$this->view->setVar('page', $page);
}
}


View側


<!-- 取得データの出力 -->
{% for value in page.items %}
{{ value.title }}
{{ value.contents }}
{% endfor %}

<!-- ページングの表示(デザインは好みで変更してください) -->
<a href="/sample?page={{ page.before }}"><<前へ</a>
 {{ page.current }} 
<a href="/sample?page={{ page.next }}">次へ>></a>


備考


1) 注意点
Controller側 17行目
"data"が配列だとInvalid data for paginatorエラーになります。オブジェクト型でセットしてあげましょう。
"data"  => $listObject

2) pageインスタンスから取得できる情報
{{ page.current }} <!-- 現在表示しているページ番号 -->
{{ page.before }} <!-- 前のページ番号 -->
{{ page.next }} <!-- 次のページ番号 -->
{{ page.last }} <!-- 最後のページ -->
{{ page.total_pages }} <!-- 全体のページ数 -->
{{ page.total_items }} <!-- 取得データの総数 -->
広告

Profile